From b73fbcf93d8412e7358a15b8ac873bcf2df32e5a Mon Sep 17 00:00:00 2001 From: Tanmay Date: Tue, 28 May 2024 11:36:40 -0400 Subject: [PATCH 1/2] refactor: MsgUpdateZRC20 into MsgPauseZrc20 and MsgUnPauseZRC20 (#2262) * refactor MsgUpdateZRC20 into MsgPauseZrc20 and MsgUnPauseZRC20 * refactor MsgUpdateZRC20 into MsgPauseZrc20 and MsgUnPauseZRC20 * add changelog entry * add breaking changes * generate files * add todo for skipping missed coins * generate 2 * fix proto files * Update x/fungible/keeper/msg_server_pause_zrc20.go Co-authored-by: Lucas Bertrand * remove validate basic checks * generate files 3 * remove action from tx Unpause and Pause --------- Co-authored-by: Lucas Bertrand --- changelog.md | 1 + docs/cli/zetacored/zetacored_tx_fungible.md | 3 +- ...d => zetacored_tx_fungible_pause-zrc20.md} | 10 +- .../zetacored_tx_fungible_unpause-zrc20.md | 59 ++ docs/openapi/openapi.swagger.yaml | 12 +- docs/releases/v17_breaking_changes.md | 4 + docs/spec/fungible/messages.md | 35 +- e2e/e2etests/test_pause_zrc20.go | 10 +- .../zetachain/zetacore/fungible/events.proto | 11 +- proto/zetachain/zetacore/fungible/tx.proto | 31 +- .../zetacore/fungible/events_pb.d.ts | 52 +- .../zetachain/zetacore/fungible/tx_pb.d.ts | 138 +-- x/fungible/client/cli/tx.go | 3 +- .../cli/tx_update_zrc20_paused_status.go | 47 +- x/fungible/keeper/msg_server_pause_zrc20.go | 55 ++ ...test.go => msg_server_pause_zrc20_test.go} | 95 +- x/fungible/keeper/msg_server_unpause_zrc20.go | 55 ++ .../keeper/msg_server_unpause_zrc20_test.go | 142 +++ .../msg_server_update_zrc20_paused_status.go | 74 -- x/fungible/types/codec.go | 6 +- x/fungible/types/events.pb.go | 430 +++++++-- ...aused_status.go => message_pause_zrc20.go} | 29 +- ...us_test.go => message_pause_zrc20_test.go} | 54 +- x/fungible/types/message_unpause_zrc20.go | 59 ++ .../types/message_unpause_zrc20_test.go | 147 +++ x/fungible/types/tx.pb.go | 838 ++++++++++++------ 26 files changed, 1690 insertions(+), 710 deletions(-) rename docs/cli/zetacored/{zetacored_tx_fungible_update-zrc20-paused-status.md => zetacored_tx_fungible_pause-zrc20.md} (89%) create mode 100644 docs/cli/zetacored/zetacored_tx_fungible_unpause-zrc20.md create mode 100644 x/fungible/keeper/msg_server_pause_zrc20.go rename x/fungible/keeper/{msg_server_update_zrc20_paused_status_test.go => msg_server_pause_zrc20_test.go} (53%) create mode 100644 x/fungible/keeper/msg_server_unpause_zrc20.go create mode 100644 x/fungible/keeper/msg_server_unpause_zrc20_test.go delete mode 100644 x/fungible/keeper/msg_server_update_zrc20_paused_status.go rename x/fungible/types/{message_update_zrc20_paused_status.go => message_pause_zrc20.go} (54%) rename x/fungible/types/{message_update_zrc20_paused_status_test.go => message_pause_zrc20_test.go} (61%) create mode 100644 x/fungible/types/message_unpause_zrc20.go create mode 100644 x/fungible/types/message_unpause_zrc20_test.go diff --git a/changelog.md b/changelog.md index fcbfee4d18..1414740d47 100644 --- a/changelog.md +++ b/changelog.md @@ -30,6 +30,7 @@ * [2210](https://github.com/zeta-chain/node/pull/2210) - removed uncessary panics in the zetaclientd process * [2205](https://github.com/zeta-chain/node/pull/2205) - remove deprecated variables pre-v17 * [2226](https://github.com/zeta-chain/node/pull/2226) - improve Go formatting with imports standardization and max line length to 120 +* [2262](https://github.com/zeta-chain/node/pull/2262) - refactor MsgUpdateZRC20 into MsgPauseZrc20 and MsgUnPauseZRC20 ### Tests diff --git a/docs/cli/zetacored/zetacored_tx_fungible.md b/docs/cli/zetacored/zetacored_tx_fungible.md index 37fc724871..3a54cf4315 100644 --- a/docs/cli/zetacored/zetacored_tx_fungible.md +++ b/docs/cli/zetacored/zetacored_tx_fungible.md @@ -28,10 +28,11 @@ zetacored tx fungible [flags] * [zetacored tx](zetacored_tx.md) - Transactions subcommands * [zetacored tx fungible deploy-fungible-coin-zrc-4](zetacored_tx_fungible_deploy-fungible-coin-zrc-4.md) - Broadcast message DeployFungibleCoinZRC20 * [zetacored tx fungible deploy-system-contracts](zetacored_tx_fungible_deploy-system-contracts.md) - Broadcast message SystemContracts +* [zetacored tx fungible pause-zrc20](zetacored_tx_fungible_pause-zrc20.md) - Broadcast message PauseZRC20 * [zetacored tx fungible remove-foreign-coin](zetacored_tx_fungible_remove-foreign-coin.md) - Broadcast message RemoveForeignCoin +* [zetacored tx fungible unpause-zrc20](zetacored_tx_fungible_unpause-zrc20.md) - Broadcast message UnpauseZRC20 * [zetacored tx fungible update-contract-bytecode](zetacored_tx_fungible_update-contract-bytecode.md) - Broadcast message UpdateContractBytecode * [zetacored tx fungible update-system-contract](zetacored_tx_fungible_update-system-contract.md) - Broadcast message UpdateSystemContract * [zetacored tx fungible update-zrc20-liquidity-cap](zetacored_tx_fungible_update-zrc20-liquidity-cap.md) - Broadcast message UpdateZRC20LiquidityCap -* [zetacored tx fungible update-zrc20-paused-status](zetacored_tx_fungible_update-zrc20-paused-status.md) - Broadcast message UpdateZRC20PausedStatus * [zetacored tx fungible update-zrc20-withdraw-fee](zetacored_tx_fungible_update-zrc20-withdraw-fee.md) - Broadcast message UpdateZRC20WithdrawFee diff --git a/docs/cli/zetacored/zetacored_tx_fungible_update-zrc20-paused-status.md b/docs/cli/zetacored/zetacored_tx_fungible_pause-zrc20.md similarity index 89% rename from docs/cli/zetacored/zetacored_tx_fungible_update-zrc20-paused-status.md rename to docs/cli/zetacored/zetacored_tx_fungible_pause-zrc20.md index c25b2afeb1..6f2e587551 100644 --- a/docs/cli/zetacored/zetacored_tx_fungible_update-zrc20-paused-status.md +++ b/docs/cli/zetacored/zetacored_tx_fungible_pause-zrc20.md @@ -1,15 +1,15 @@ -# tx fungible update-zrc20-paused-status +# tx fungible pause-zrc20 -Broadcast message UpdateZRC20PausedStatus +Broadcast message PauseZRC20 ``` -zetacored tx fungible update-zrc20-paused-status [contractAddress1, contractAddress2, ...] [pausedStatus] [flags] +zetacored tx fungible pause-zrc20 [contractAddress1, contractAddress2, ...] [flags] ``` ### Examples ``` -zetacored tx fungible update-zrc20-paused-status "0xece40cbB54d65282c4623f141c4a8a0bE7D6AdEc, 0xece40cbB54d65282c4623f141c4a8a0bEjgksncf" 0 +zetacored tx fungible pause-zrc20 "0xece40cbB54d65282c4623f141c4a8a0bE7D6AdEc, 0xece40cbB54d65282c4623f141c4a8a0bEjgksncf" ``` ### Options @@ -28,7 +28,7 @@ zetacored tx fungible update-zrc20-paused-status "0xece40cbB54d65282c4623f141c4a --gas-adjustment float adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored (default 1) --gas-prices string Gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom) --generate-only Build an unsigned transaction and write it to STDOUT (when enabled, the local Keybase only accessed when providing a key name) - -h, --help help for update-zrc20-paused-status + -h, --help help for pause-zrc20 --keyring-backend string Select keyring's backend (os|file|kwallet|pass|test|memory) --keyring-dir string The client Keyring directory; if omitted, the default 'home' directory will be used --ledger Use a connected Ledger device diff --git a/docs/cli/zetacored/zetacored_tx_fungible_unpause-zrc20.md b/docs/cli/zetacored/zetacored_tx_fungible_unpause-zrc20.md new file mode 100644 index 0000000000..3063faee84 --- /dev/null +++ b/docs/cli/zetacored/zetacored_tx_fungible_unpause-zrc20.md @@ -0,0 +1,59 @@ +# tx fungible unpause-zrc20 + +Broadcast message UnpauseZRC20 + +``` +zetacored tx fungible unpause-zrc20 [contractAddress1, contractAddress2, ...] [flags] +``` + +### Examples + +``` +zetacored tx fungible unpause-zrc20 "0xece40cbB54d65282c4623f141c4a8a0bE7D6AdEc, 0xece40cbB54d65282c4623f141c4a8a0bEjgksncf" +``` + +### Options + +``` + -a, --account-number uint The account number of the signing account (offline mode only) + --aux Generate aux signer data instead of sending a tx + -b, --broadcast-mode string Transaction broadcasting mode (sync|async) + --chain-id string The network chain ID + --dry-run ignore the --gas flag and perform a simulation of a transaction, but don't broadcast it (when enabled, the local Keybase is not accessible) + --fee-granter string Fee granter grants fees for the transaction + --fee-payer string Fee payer pays fees for the transaction instead of deducting from the signer + --fees string Fees to pay along with transaction; eg: 10uatom + --from string Name or address of private key with which to sign + --gas string gas limit to set per-transaction; set to "auto" to calculate sufficient gas automatically. Note: "auto" option doesn't always report accurate results. Set a valid coin value to adjust the result. Can be used instead of "fees". (default 200000) + --gas-adjustment float adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored (default 1) + --gas-prices string Gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom) + --generate-only Build an unsigned transaction and write it to STDOUT (when enabled, the local Keybase only accessed when providing a key name) + -h, --help help for unpause-zrc20 + --keyring-backend string Select keyring's backend (os|file|kwallet|pass|test|memory) + --keyring-dir string The client Keyring directory; if omitted, the default 'home' directory will be used + --ledger Use a connected Ledger device + --node string [host]:[port] to tendermint rpc interface for this chain + --note string Note to add a description to the transaction (previously --memo) + --offline Offline mode (does not allow any online functionality) + -o, --output string Output format (text|json) + -s, --sequence uint The sequence number of the signing account (offline mode only) + --sign-mode string Choose sign mode (direct|amino-json|direct-aux), this is an advanced feature + --timeout-height uint Set a block timeout height to prevent the tx from being committed past a certain height + --tip string Tip is the amount that is going to be transferred to the fee payer on the target chain. This flag is only valid when used with --aux, and is ignored if the target chain didn't enable the TipDecorator + -y, --yes Skip tx broadcasting prompt confirmation +``` + +### Options inherited from parent commands + +``` + --home string directory for config and data + --log_format string The logging format (json|plain) + --log_level string The logging level (trace|debug|info|warn|error|fatal|panic) + --log_no_color Disable colored logs + --trace print out full stack trace on errors +``` + +### SEE ALSO + +* [zetacored tx fungible](zetacored_tx_fungible.md) - fungible transactions subcommands + diff --git a/docs/openapi/openapi.swagger.yaml b/docs/openapi/openapi.swagger.yaml index 92c7ac28c8..9067eccc6d 100644 --- a/docs/openapi/openapi.swagger.yaml +++ b/docs/openapi/openapi.swagger.yaml @@ -57422,16 +57422,18 @@ definitions: type: string systemContract: type: string + fungibleMsgPauseZRC20Response: + type: object fungibleMsgRemoveForeignCoinResponse: type: object + fungibleMsgUnpauseZRC20Response: + type: object fungibleMsgUpdateContractBytecodeResponse: type: object fungibleMsgUpdateSystemContractResponse: type: object fungibleMsgUpdateZRC20LiquidityCapResponse: type: object - fungibleMsgUpdateZRC20PausedStatusResponse: - type: object fungibleMsgUpdateZRC20WithdrawFeeResponse: type: object fungibleQueryAllForeignCoinsResponse: @@ -57486,12 +57488,6 @@ definitions: type: string connector_zevm: type: string - fungibleUpdatePausedStatusAction: - type: string - enum: - - PAUSE - - UNPAUSE - default: PAUSE googlerpcStatus: type: object properties: diff --git a/docs/releases/v17_breaking_changes.md b/docs/releases/v17_breaking_changes.md index b1598cbf9b..13dc5df873 100644 --- a/docs/releases/v17_breaking_changes.md +++ b/docs/releases/v17_breaking_changes.md @@ -47,3 +47,7 @@ * `/zeta-chain/crosschain/inTxHashToCctxData/{hash}` endpoint is now `/zeta-chain/crosschain/inboundHashToCctxData/{hash}` * `InTxHashToCctxAll` has been renamed to `InboundHashToCctxAll` * `/zeta-chain/crosschain/inTxHashToCctx` endpoint is now `/zeta-chain/crosschain/inboundHashToCctx` + +* `MsgUpdateZRC20` has been removed, and replaced with `MsgPauseZRC20` and `MsgUnpauseZRC20` messages. + * `MsgPauseZRC20` message pauses a ZRC20 token and can be triggered via `PolicyType_groupEmergency` + * `MsgUnpauseZRC20` message unpauses a ZRC20 token and can be triggered via `PolicyType_groupOperational` diff --git a/docs/spec/fungible/messages.md b/docs/spec/fungible/messages.md index 2e3aceb19e..93c7864aef 100644 --- a/docs/spec/fungible/messages.md +++ b/docs/spec/fungible/messages.md @@ -102,32 +102,41 @@ message MsgUpdateZRC20WithdrawFee { } ``` -## MsgUpdateZRC20PausedStatus +## MsgUpdateZRC20LiquidityCap -UpdateZRC20PausedStatus updates the paused status of a ZRC20 -The list of ZRC20s are either paused or unpaused +UpdateZRC20LiquidityCap updates the liquidity cap for a ZRC20 token. -Authorized: admin policy group 1 (pausing), group 2 (pausing & unpausing) +Authorized: admin policy group 2. ```proto -message MsgUpdateZRC20PausedStatus { +message MsgUpdateZRC20LiquidityCap { string creator = 1; - string zrc20_addresses = 2; - UpdatePausedStatusAction action = 3; + string zrc20_address = 2; + string liquidity_cap = 3; } ``` -## MsgUpdateZRC20LiquidityCap +## MsgPauseZRC20 -UpdateZRC20LiquidityCap updates the liquidity cap for a ZRC20 token. +PauseZRC20 pauses a list of ZRC20 tokens +Authorized: admin policy group groupEmergency. -Authorized: admin policy group 2. +```proto +message MsgPauseZRC20 { + string creator = 1; + string zrc20_addresses = 2; +} +``` + +## MsgUnpauseZRC20 + +UnpauseZRC20 unpauses the ZRC20 token +Authorized: admin policy group groupOperational. ```proto -message MsgUpdateZRC20LiquidityCap { +message MsgUnpauseZRC20 { string creator = 1; - string zrc20_address = 2; - string liquidity_cap = 3; + string zrc20_addresses = 2; } ``` diff --git a/e2e/e2etests/test_pause_zrc20.go b/e2e/e2etests/test_pause_zrc20.go index 07505d4b2a..dbe5182e80 100644 --- a/e2e/e2etests/test_pause_zrc20.go +++ b/e2e/e2etests/test_pause_zrc20.go @@ -39,12 +39,11 @@ func TestPauseZRC20(r *runner.E2ERunner, _ []string) { // Pause ETH ZRC20 r.Logger.Info("Pausing ETH") - msg := fungibletypes.NewMsgUpdateZRC20PausedStatus( + msgPause := fungibletypes.NewMsgPauseZRC20( r.ZetaTxServer.GetAccountAddress(0), []string{r.ETHZRC20Addr.Hex()}, - fungibletypes.UpdatePausedStatusAction_PAUSE, ) - res, err := r.ZetaTxServer.BroadcastTx(utils.FungibleAdminName, msg) + res, err := r.ZetaTxServer.BroadcastTx(utils.FungibleAdminName, msgPause) if err != nil { panic(err) } @@ -129,12 +128,11 @@ func TestPauseZRC20(r *runner.E2ERunner, _ []string) { // Unpause ETH ZRC20 r.Logger.Info("Unpausing ETH") - msg = fungibletypes.NewMsgUpdateZRC20PausedStatus( + msgUnpause := fungibletypes.NewMsgUnpauseZRC20( r.ZetaTxServer.GetAccountAddress(0), []string{r.ETHZRC20Addr.Hex()}, - fungibletypes.UpdatePausedStatusAction_UNPAUSE, ) - res, err = r.ZetaTxServer.BroadcastTx(utils.FungibleAdminName, msg) + res, err = r.ZetaTxServer.BroadcastTx(utils.FungibleAdminName, msgUnpause) if err != nil { panic(err) } diff --git a/proto/zetachain/zetacore/fungible/events.proto b/proto/zetachain/zetacore/fungible/events.proto index 406da2c94d..41b78c635e 100644 --- a/proto/zetachain/zetacore/fungible/events.proto +++ b/proto/zetachain/zetacore/fungible/events.proto @@ -38,11 +38,16 @@ message EventZRC20WithdrawFeeUpdated { string new_gas_limit = 9; } -message EventZRC20PausedStatusUpdated { +message EventZRC20Paused { string msg_type_url = 1; repeated string zrc20_addresses = 2; - UpdatePausedStatusAction action = 3; - string signer = 4; + string signer = 3; +} + +message EventZRC20Unpaused { + string msg_type_url = 1; + repeated string zrc20_addresses = 2; + string signer = 3; } message EventSystemContractsDeployed { diff --git a/proto/zetachain/zetacore/fungible/tx.proto b/proto/zetachain/zetacore/fungible/tx.proto index 3090591e2d..bdb9ee8939 100644 --- a/proto/zetachain/zetacore/fungible/tx.proto +++ b/proto/zetachain/zetacore/fungible/tx.proto @@ -20,10 +20,10 @@ service Msg { returns (MsgUpdateContractBytecodeResponse); rpc UpdateZRC20WithdrawFee(MsgUpdateZRC20WithdrawFee) returns (MsgUpdateZRC20WithdrawFeeResponse); - rpc UpdateZRC20PausedStatus(MsgUpdateZRC20PausedStatus) - returns (MsgUpdateZRC20PausedStatusResponse); rpc UpdateZRC20LiquidityCap(MsgUpdateZRC20LiquidityCap) returns (MsgUpdateZRC20LiquidityCapResponse); + rpc PauseZRC20(MsgPauseZRC20) returns (MsgPauseZRC20Response); + rpc UnpauseZRC20(MsgUnpauseZRC20) returns (MsgUnpauseZRC20Response); } message MsgDeploySystemContracts { string creator = 1; } @@ -86,19 +86,6 @@ message MsgUpdateContractBytecode { message MsgUpdateContractBytecodeResponse {} -enum UpdatePausedStatusAction { - PAUSE = 0; - UNPAUSE = 1; -} - -message MsgUpdateZRC20PausedStatus { - string creator = 1; - repeated string zrc20_addresses = 2; - UpdatePausedStatusAction action = 3; -} - -message MsgUpdateZRC20PausedStatusResponse {} - message MsgUpdateZRC20LiquidityCap { string creator = 1; string zrc20_address = 2; @@ -109,3 +96,17 @@ message MsgUpdateZRC20LiquidityCap { } message MsgUpdateZRC20LiquidityCapResponse {} + +message MsgPauseZRC20 { + string creator = 1; + repeated string zrc20_addresses = 2; +} + +message MsgPauseZRC20Response {} + +message MsgUnpauseZRC20 { + string creator = 1; + repeated string zrc20_addresses = 2; +} + +message MsgUnpauseZRC20Response {} \ No newline at end of file diff --git a/typescript/zetachain/zetacore/fungible/events_pb.d.ts b/typescript/zetachain/zetacore/fungible/events_pb.d.ts index 111f48bac8..2cfb7f648b 100644 --- a/typescript/zetachain/zetacore/fungible/events_pb.d.ts +++ b/typescript/zetachain/zetacore/fungible/events_pb.d.ts @@ -6,7 +6,6 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto3 } from "@bufbuild/protobuf"; import type { CoinType } from "../pkg/coin/coin_pb.js"; -import type { UpdatePausedStatusAction } from "./tx_pb.js"; /** * @generated from message zetachain.zetacore.fungible.EventSystemContractUpdated @@ -176,9 +175,9 @@ export declare class EventZRC20WithdrawFeeUpdated extends Message { +export declare class EventZRC20Paused extends Message { /** * @generated from field: string msg_type_url = 1; */ @@ -190,28 +189,57 @@ export declare class EventZRC20PausedStatusUpdated extends Message); + + static readonly runtime: typeof proto3; + static readonly typeName = "zetachain.zetacore.fungible.EventZRC20Paused"; + static readonly fields: FieldList; + + static fromBinary(bytes: Uint8Array, options?: Partial): EventZRC20Paused; + static fromJson(jsonValue: JsonValue, options?: Partial): EventZRC20Paused; + + static fromJsonString(jsonString: string, options?: Partial): EventZRC20Paused; + + static equals(a: EventZRC20Paused | PlainMessage | undefined, b: EventZRC20Paused | PlainMessage | undefined): boolean; +} + +/** + * @generated from message zetachain.zetacore.fungible.EventZRC20Unpaused + */ +export declare class EventZRC20Unpaused extends Message { /** - * @generated from field: string signer = 4; + * @generated from field: string msg_type_url = 1; + */ + msgTypeUrl: string; + + /** + * @generated from field: repeated string zrc20_addresses = 2; + */ + zrc20Addresses: string[]; + + /** + * @generated from field: string signer = 3; */ signer: string; - constructor(data?: PartialMessage); + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; - static readonly typeName = "zetachain.zetacore.fungible.EventZRC20PausedStatusUpdated"; + static readonly typeName = "zetachain.zetacore.fungible.EventZRC20Unpaused"; static readonly fields: FieldList; - static fromBinary(bytes: Uint8Array, options?: Partial): EventZRC20PausedStatusUpdated; + static fromBinary(bytes: Uint8Array, options?: Partial): EventZRC20Unpaused; - static fromJson(jsonValue: JsonValue, options?: Partial): EventZRC20PausedStatusUpdated; + static fromJson(jsonValue: JsonValue, options?: Partial): EventZRC20Unpaused; - static fromJsonString(jsonString: string, options?: Partial): EventZRC20PausedStatusUpdated; + static fromJsonString(jsonString: string, options?: Partial): EventZRC20Unpaused; - static equals(a: EventZRC20PausedStatusUpdated | PlainMessage | undefined, b: EventZRC20PausedStatusUpdated | PlainMessage | undefined): boolean; + static equals(a: EventZRC20Unpaused | PlainMessage | undefined, b: EventZRC20Unpaused | PlainMessage | undefined): boolean; } /** diff --git a/typescript/zetachain/zetacore/fungible/tx_pb.d.ts b/typescript/zetachain/zetacore/fungible/tx_pb.d.ts index de3c7df658..a1038d4bfd 100644 --- a/typescript/zetachain/zetacore/fungible/tx_pb.d.ts +++ b/typescript/zetachain/zetacore/fungible/tx_pb.d.ts @@ -7,21 +7,6 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialM import { Message, proto3 } from "@bufbuild/protobuf"; import type { CoinType } from "../pkg/coin/coin_pb.js"; -/** - * @generated from enum zetachain.zetacore.fungible.UpdatePausedStatusAction - */ -export declare enum UpdatePausedStatusAction { - /** - * @generated from enum value: PAUSE = 0; - */ - PAUSE = 0, - - /** - * @generated from enum value: UNPAUSE = 1; - */ - UNPAUSE = 1, -} - /** * @generated from message zetachain.zetacore.fungible.MsgDeploySystemContracts */ @@ -383,108 +368,151 @@ export declare class MsgUpdateContractBytecodeResponse extends Message { +export declare class MsgUpdateZRC20LiquidityCap extends Message { /** * @generated from field: string creator = 1; */ creator: string; /** - * @generated from field: repeated string zrc20_addresses = 2; + * @generated from field: string zrc20_address = 2; */ - zrc20Addresses: string[]; + zrc20Address: string; /** - * @generated from field: zetachain.zetacore.fungible.UpdatePausedStatusAction action = 3; + * @generated from field: string liquidity_cap = 3; */ - action: UpdatePausedStatusAction; + liquidityCap: string; - constructor(data?: PartialMessage); + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; - static readonly typeName = "zetachain.zetacore.fungible.MsgUpdateZRC20PausedStatus"; + static readonly typeName = "zetachain.zetacore.fungible.MsgUpdateZRC20LiquidityCap"; static readonly fields: FieldList; - static fromBinary(bytes: Uint8Array, options?: Partial): MsgUpdateZRC20PausedStatus; + static fromBinary(bytes: Uint8Array, options?: Partial): MsgUpdateZRC20LiquidityCap; - static fromJson(jsonValue: JsonValue, options?: Partial): MsgUpdateZRC20PausedStatus; + static fromJson(jsonValue: JsonValue, options?: Partial): MsgUpdateZRC20LiquidityCap; - static fromJsonString(jsonString: string, options?: Partial): MsgUpdateZRC20PausedStatus; + static fromJsonString(jsonString: string, options?: Partial): MsgUpdateZRC20LiquidityCap; - static equals(a: MsgUpdateZRC20PausedStatus | PlainMessage | undefined, b: MsgUpdateZRC20PausedStatus | PlainMessage | undefined): boolean; + static equals(a: MsgUpdateZRC20LiquidityCap | PlainMessage | undefined, b: MsgUpdateZRC20LiquidityCap | PlainMessage | undefined): boolean; } /** - * @generated from message zetachain.zetacore.fungible.MsgUpdateZRC20PausedStatusResponse + * @generated from message zetachain.zetacore.fungible.MsgUpdateZRC20LiquidityCapResponse */ -export declare class MsgUpdateZRC20PausedStatusResponse extends Message { - constructor(data?: PartialMessage); +export declare class MsgUpdateZRC20LiquidityCapResponse extends Message { + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; - static readonly typeName = "zetachain.zetacore.fungible.MsgUpdateZRC20PausedStatusResponse"; + static readonly typeName = "zetachain.zetacore.fungible.MsgUpdateZRC20LiquidityCapResponse"; static readonly fields: FieldList; - static fromBinary(bytes: Uint8Array, options?: Partial): MsgUpdateZRC20PausedStatusResponse; + static fromBinary(bytes: Uint8Array, options?: Partial): MsgUpdateZRC20LiquidityCapResponse; - static fromJson(jsonValue: JsonValue, options?: Partial): MsgUpdateZRC20PausedStatusResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): MsgUpdateZRC20LiquidityCapResponse; - static fromJsonString(jsonString: string, options?: Partial): MsgUpdateZRC20PausedStatusResponse; + static fromJsonString(jsonString: string, options?: Partial): MsgUpdateZRC20LiquidityCapResponse; - static equals(a: MsgUpdateZRC20PausedStatusResponse | PlainMessage | undefined, b: MsgUpdateZRC20PausedStatusResponse | PlainMessage | undefined): boolean; + static equals(a: MsgUpdateZRC20LiquidityCapResponse | PlainMessage | undefined, b: MsgUpdateZRC20LiquidityCapResponse | PlainMessage | undefined): boolean; } /** - * @generated from message zetachain.zetacore.fungible.MsgUpdateZRC20LiquidityCap + * @generated from message zetachain.zetacore.fungible.MsgPauseZRC20 */ -export declare class MsgUpdateZRC20LiquidityCap extends Message { +export declare class MsgPauseZRC20 extends Message { /** * @generated from field: string creator = 1; */ creator: string; /** - * @generated from field: string zrc20_address = 2; + * @generated from field: repeated string zrc20_addresses = 2; */ - zrc20Address: string; + zrc20Addresses: string[]; + + constructor(data?: PartialMessage); + + static readonly runtime: typeof proto3; + static readonly typeName = "zetachain.zetacore.fungible.MsgPauseZRC20"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): MsgPauseZRC20; + + static fromJson(jsonValue: JsonValue, options?: Partial): MsgPauseZRC20; + + static fromJsonString(jsonString: string, options?: Partial): MsgPauseZRC20; + + static equals(a: MsgPauseZRC20 | PlainMessage | undefined, b: MsgPauseZRC20 | PlainMessage | undefined): boolean; +} + +/** + * @generated from message zetachain.zetacore.fungible.MsgPauseZRC20Response + */ +export declare class MsgPauseZRC20Response extends Message { + constructor(data?: PartialMessage); + + static readonly runtime: typeof proto3; + static readonly typeName = "zetachain.zetacore.fungible.MsgPauseZRC20Response"; + static readonly fields: FieldList; + + static fromBinary(bytes: Uint8Array, options?: Partial): MsgPauseZRC20Response; + + static fromJson(jsonValue: JsonValue, options?: Partial): MsgPauseZRC20Response; + + static fromJsonString(jsonString: string, options?: Partial): MsgPauseZRC20Response; + + static equals(a: MsgPauseZRC20Response | PlainMessage | undefined, b: MsgPauseZRC20Response | PlainMessage | undefined): boolean; +} + +/** + * @generated from message zetachain.zetacore.fungible.MsgUnpauseZRC20 + */ +export declare class MsgUnpauseZRC20 extends Message { /** - * @generated from field: string liquidity_cap = 3; + * @generated from field: string creator = 1; */ - liquidityCap: string; + creator: string; - constructor(data?: PartialMessage); + /** + * @generated from field: repeated string zrc20_addresses = 2; + */ + zrc20Addresses: string[]; + + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; - static readonly typeName = "zetachain.zetacore.fungible.MsgUpdateZRC20LiquidityCap"; + static readonly typeName = "zetachain.zetacore.fungible.MsgUnpauseZRC20"; static readonly fields: FieldList; - static fromBinary(bytes: Uint8Array, options?: Partial): MsgUpdateZRC20LiquidityCap; + static fromBinary(bytes: Uint8Array, options?: Partial): MsgUnpauseZRC20; - static fromJson(jsonValue: JsonValue, options?: Partial): MsgUpdateZRC20LiquidityCap; + static fromJson(jsonValue: JsonValue, options?: Partial): MsgUnpauseZRC20; - static fromJsonString(jsonString: string, options?: Partial): MsgUpdateZRC20LiquidityCap; + static fromJsonString(jsonString: string, options?: Partial): MsgUnpauseZRC20; - static equals(a: MsgUpdateZRC20LiquidityCap | PlainMessage | undefined, b: MsgUpdateZRC20LiquidityCap | PlainMessage | undefined): boolean; + static equals(a: MsgUnpauseZRC20 | PlainMessage | undefined, b: MsgUnpauseZRC20 | PlainMessage | undefined): boolean; } /** - * @generated from message zetachain.zetacore.fungible.MsgUpdateZRC20LiquidityCapResponse + * @generated from message zetachain.zetacore.fungible.MsgUnpauseZRC20Response */ -export declare class MsgUpdateZRC20LiquidityCapResponse extends Message { - constructor(data?: PartialMessage); +export declare class MsgUnpauseZRC20Response extends Message { + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; - static readonly typeName = "zetachain.zetacore.fungible.MsgUpdateZRC20LiquidityCapResponse"; + static readonly typeName = "zetachain.zetacore.fungible.MsgUnpauseZRC20Response"; static readonly fields: FieldList; - static fromBinary(bytes: Uint8Array, options?: Partial): MsgUpdateZRC20LiquidityCapResponse; + static fromBinary(bytes: Uint8Array, options?: Partial): MsgUnpauseZRC20Response; - static fromJson(jsonValue: JsonValue, options?: Partial): MsgUpdateZRC20LiquidityCapResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): MsgUnpauseZRC20Response; - static fromJsonString(jsonString: string, options?: Partial): MsgUpdateZRC20LiquidityCapResponse; + static fromJsonString(jsonString: string, options?: Partial): MsgUnpauseZRC20Response; - static equals(a: MsgUpdateZRC20LiquidityCapResponse | PlainMessage | undefined, b: MsgUpdateZRC20LiquidityCapResponse | PlainMessage | undefined): boolean; + static equals(a: MsgUnpauseZRC20Response | PlainMessage | undefined, b: MsgUnpauseZRC20Response | PlainMessage | undefined): boolean; } diff --git a/x/fungible/client/cli/tx.go b/x/fungible/client/cli/tx.go index 5830233c37..8d81382cc8 100644 --- a/x/fungible/client/cli/tx.go +++ b/x/fungible/client/cli/tx.go @@ -26,7 +26,8 @@ func GetTxCmd() *cobra.Command { CmdUpdateZRC20LiquidityCap(), CmdUpdateContractBytecode(), CmdUpdateSystemContract(), - CmdUpdateZRC20PausedStatus(), + CmdPauseZRC20(), + CmdUnpauseZRC20(), CmdUpdateZRC20WithdrawFee(), ) diff --git a/x/fungible/client/cli/tx_update_zrc20_paused_status.go b/x/fungible/client/cli/tx_update_zrc20_paused_status.go index 3c0b498d5a..553cf68545 100644 --- a/x/fungible/client/cli/tx_update_zrc20_paused_status.go +++ b/x/fungible/client/cli/tx_update_zrc20_paused_status.go @@ -1,25 +1,22 @@ package cli import ( - "strconv" "strings" - cosmoserrors "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" "github.com/zeta-chain/zetacore/x/fungible/types" ) -func CmdUpdateZRC20PausedStatus() *cobra.Command { +func CmdPauseZRC20() *cobra.Command { cmd := &cobra.Command{ - Use: "update-zrc20-paused-status [contractAddress1, contractAddress2, ...] [pausedStatus]", - Short: "Broadcast message UpdateZRC20PausedStatus", - Example: `zetacored tx fungible update-zrc20-paused-status "0xece40cbB54d65282c4623f141c4a8a0bE7D6AdEc, 0xece40cbB54d65282c4623f141c4a8a0bEjgksncf" 0 `, - Args: cobra.ExactArgs(2), + Use: "pause-zrc20 [contractAddress1, contractAddress2, ...]", + Short: "Broadcast message PauseZRC20", + Example: `zetacored tx fungible pause-zrc20 "0xece40cbB54d65282c4623f141c4a8a0bE7D6AdEc, 0xece40cbB54d65282c4623f141c4a8a0bEjgksncf" `, + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) (err error) { clientCtx, err := client.GetClientTxContext(cmd) if err != nil { @@ -28,23 +25,37 @@ func CmdUpdateZRC20PausedStatus() *cobra.Command { contractAddressList := strings.Split(strings.TrimSpace(args[0]), ",") - action, err := strconv.ParseUint(args[1], 10, 32) + msg := types.NewMsgPauseZRC20( + clientCtx.GetFromAddress().String(), + contractAddressList, + ) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func CmdUnpauseZRC20() *cobra.Command { + cmd := &cobra.Command{ + Use: "unpause-zrc20 [contractAddress1, contractAddress2, ...]", + Short: "Broadcast message UnpauseZRC20", + Example: `zetacored tx fungible unpause-zrc20 "0xece40cbB54d65282c4623f141c4a8a0bE7D6AdEc, 0xece40cbB54d65282c4623f141c4a8a0bEjgksncf" `, + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) (err error) { + clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - if (action != 0) && (action != 1) { - return cosmoserrors.Wrapf(sdkerrors.ErrInvalidRequest, "invalid action (%d)", action) - } - pausedStatus := types.UpdatePausedStatusAction_PAUSE - if action == 1 { - pausedStatus = types.UpdatePausedStatusAction_UNPAUSE - } + contractAddressList := strings.Split(strings.TrimSpace(args[0]), ",") - msg := types.NewMsgUpdateZRC20PausedStatus( + msg := types.NewMsgUnpauseZRC20( clientCtx.GetFromAddress().String(), contractAddressList, - pausedStatus, ) return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) diff --git a/x/fungible/keeper/msg_server_pause_zrc20.go b/x/fungible/keeper/msg_server_pause_zrc20.go new file mode 100644 index 0000000000..536da472a1 --- /dev/null +++ b/x/fungible/keeper/msg_server_pause_zrc20.go @@ -0,0 +1,55 @@ +package keeper + +import ( + "context" + + cosmoserrors "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + + authoritytypes "github.com/zeta-chain/zetacore/x/authority/types" + "github.com/zeta-chain/zetacore/x/fungible/types" +) + +// PauseZRC20 pauses a list of ZRC20 tokens +// Authorized: admin policy group groupEmergency. +func (k msgServer) PauseZRC20( + goCtx context.Context, + msg *types.MsgPauseZRC20, +) (*types.MsgPauseZRC20Response, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + if !k.GetAuthorityKeeper().IsAuthorized(ctx, msg.Creator, authoritytypes.PolicyType_groupEmergency) { + return nil, cosmoserrors.Wrap( + authoritytypes.ErrUnauthorized, + "PauseZRC20 can only be executed by the correct policy account", + ) + } + + // iterate all foreign coins and set paused status + for _, zrc20 := range msg.Zrc20Addresses { + fc, found := k.GetForeignCoins(ctx, zrc20) + if !found { + return nil, cosmoserrors.Wrapf(types.ErrForeignCoinNotFound, "foreign coin not found %s", zrc20) + } + // Set status to paused + fc.Paused = true + k.SetForeignCoins(ctx, fc) + } + + err := ctx.EventManager().EmitTypedEvent( + &types.EventZRC20Paused{ + MsgTypeUrl: sdk.MsgTypeURL(&types.MsgPauseZRC20{}), + Zrc20Addresses: msg.Zrc20Addresses, + Signer: msg.Creator, + }, + ) + if err != nil { + k.Logger(ctx).Error("failed to emit event", + "event", "EventZRC20Paused", + "error", err.Error(), + ) + return nil, cosmoserrors.Wrapf(types.ErrEmitEvent, "failed to emit event (%s)", err.Error()) + } + + return &types.MsgPauseZRC20Response{}, nil +} diff --git a/x/fungible/keeper/msg_server_update_zrc20_paused_status_test.go b/x/fungible/keeper/msg_server_pause_zrc20_test.go similarity index 53% rename from x/fungible/keeper/msg_server_update_zrc20_paused_status_test.go rename to x/fungible/keeper/msg_server_pause_zrc20_test.go index 588361ce5a..9f9edc68fe 100644 --- a/x/fungible/keeper/msg_server_update_zrc20_paused_status_test.go +++ b/x/fungible/keeper/msg_server_pause_zrc20_test.go @@ -3,7 +3,6 @@ package keeper_test import ( "testing" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" keepertest "github.com/zeta-chain/zetacore/testutil/keeper" @@ -13,8 +12,8 @@ import ( "github.com/zeta-chain/zetacore/x/fungible/types" ) -func TestKeeper_UpdateZRC20PausedStatus(t *testing.T) { - t.Run("can update the paused status of zrc20", func(t *testing.T) { +func TestKeeper_PauseZRC20(t *testing.T) { + t.Run("can pause zrc20", func(t *testing.T) { k, ctx, _, _ := keepertest.FungibleKeeperWithMocks(t, keepertest.FungibleMockOptions{ UseAuthorityMock: true, }) @@ -51,113 +50,47 @@ func TestKeeper_UpdateZRC20PausedStatus(t *testing.T) { keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupEmergency, true) // can pause zrc20 - _, err := msgServer.UpdateZRC20PausedStatus(ctx, types.NewMsgUpdateZRC20PausedStatus( + _, err := msgServer.PauseZRC20(ctx, types.NewMsgPauseZRC20( admin, []string{ zrc20A, zrc20B, }, - types.UpdatePausedStatusAction_PAUSE, )) require.NoError(t, err) assertPaused(zrc20A) assertPaused(zrc20B) assertUnpaused(zrc20C) - keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupOperational, true) - - // can unpause zrc20 - _, err = msgServer.UpdateZRC20PausedStatus(ctx, types.NewMsgUpdateZRC20PausedStatus( - admin, - []string{ - zrc20A, - }, - types.UpdatePausedStatusAction_UNPAUSE, - )) - require.NoError(t, err) - assertUnpaused(zrc20A) - assertPaused(zrc20B) - assertUnpaused(zrc20C) - keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupEmergency, true) // can pause already paused zrc20 - _, err = msgServer.UpdateZRC20PausedStatus(ctx, types.NewMsgUpdateZRC20PausedStatus( + _, err = msgServer.PauseZRC20(ctx, types.NewMsgPauseZRC20( admin, []string{ zrc20B, }, - types.UpdatePausedStatusAction_PAUSE, - )) - require.NoError(t, err) - assertUnpaused(zrc20A) - assertPaused(zrc20B) - assertUnpaused(zrc20C) - - keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupOperational, true) - - // can unpause already unpaused zrc20 - _, err = msgServer.UpdateZRC20PausedStatus(ctx, types.NewMsgUpdateZRC20PausedStatus( - admin, - []string{ - zrc20C, - }, - types.UpdatePausedStatusAction_UNPAUSE, )) require.NoError(t, err) - assertUnpaused(zrc20A) + assertPaused(zrc20A) assertPaused(zrc20B) assertUnpaused(zrc20C) keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupEmergency, true) // can pause all zrc20 - _, err = msgServer.UpdateZRC20PausedStatus(ctx, types.NewMsgUpdateZRC20PausedStatus( + _, err = msgServer.PauseZRC20(ctx, types.NewMsgPauseZRC20( admin, []string{ zrc20A, zrc20B, zrc20C, }, - types.UpdatePausedStatusAction_PAUSE, )) require.NoError(t, err) assertPaused(zrc20A) assertPaused(zrc20B) assertPaused(zrc20C) - - keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupOperational, true) - - // can unpause all zrc20 - _, err = msgServer.UpdateZRC20PausedStatus(ctx, types.NewMsgUpdateZRC20PausedStatus( - admin, - []string{ - zrc20A, - zrc20B, - zrc20C, - }, - types.UpdatePausedStatusAction_UNPAUSE, - )) - require.NoError(t, err) - assertUnpaused(zrc20A) - assertUnpaused(zrc20B) - assertUnpaused(zrc20C) - }) - - t.Run("should fail if invalid message", func(t *testing.T) { - k, ctx, _, _ := keepertest.FungibleKeeperWithMocks(t, keepertest.FungibleMockOptions{ - UseAuthorityMock: true, - }) - - msgServer := keeper.NewMsgServerImpl(*k) - - admin := sample.AccAddress() - - invalidMsg := types.NewMsgUpdateZRC20PausedStatus(admin, []string{}, types.UpdatePausedStatusAction_PAUSE) - require.ErrorIs(t, invalidMsg.ValidateBasic(), sdkerrors.ErrInvalidRequest) - - _, err := msgServer.UpdateZRC20PausedStatus(ctx, invalidMsg) - require.ErrorIs(t, err, sdkerrors.ErrInvalidRequest) }) t.Run("should fail if not authorized", func(t *testing.T) { @@ -171,22 +104,11 @@ func TestKeeper_UpdateZRC20PausedStatus(t *testing.T) { authorityMock := keepertest.GetFungibleAuthorityMock(t, k) keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupEmergency, false) - _, err := msgServer.UpdateZRC20PausedStatus(ctx, types.NewMsgUpdateZRC20PausedStatus( + _, err := msgServer.PauseZRC20(ctx, types.NewMsgPauseZRC20( admin, []string{sample.EthAddress().String()}, - types.UpdatePausedStatusAction_PAUSE, )) require.ErrorIs(t, err, authoritytypes.ErrUnauthorized) - - keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupOperational, false) - - _, err = msgServer.UpdateZRC20PausedStatus(ctx, types.NewMsgUpdateZRC20PausedStatus( - admin, - []string{sample.EthAddress().String()}, - types.UpdatePausedStatusAction_UNPAUSE, - )) - - require.ErrorIs(t, err, authoritytypes.ErrUnauthorized) }) t.Run("should fail if zrc20 does not exist", func(t *testing.T) { @@ -204,14 +126,13 @@ func TestKeeper_UpdateZRC20PausedStatus(t *testing.T) { k.SetForeignCoins(ctx, sample.ForeignCoins(t, zrc20A)) k.SetForeignCoins(ctx, sample.ForeignCoins(t, zrc20B)) - _, err := msgServer.UpdateZRC20PausedStatus(ctx, types.NewMsgUpdateZRC20PausedStatus( + _, err := msgServer.PauseZRC20(ctx, types.NewMsgPauseZRC20( admin, []string{ zrc20A, sample.EthAddress().String(), zrc20B, }, - types.UpdatePausedStatusAction_PAUSE, )) require.ErrorIs(t, err, types.ErrForeignCoinNotFound) }) diff --git a/x/fungible/keeper/msg_server_unpause_zrc20.go b/x/fungible/keeper/msg_server_unpause_zrc20.go new file mode 100644 index 0000000000..f00afd6909 --- /dev/null +++ b/x/fungible/keeper/msg_server_unpause_zrc20.go @@ -0,0 +1,55 @@ +package keeper + +import ( + "context" + + cosmoserrors "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + + authoritytypes "github.com/zeta-chain/zetacore/x/authority/types" + "github.com/zeta-chain/zetacore/x/fungible/types" +) + +// UnpauseZRC20 unpauses the ZRC20 token +// Authorized: admin policy group groupOperational. +func (k msgServer) UnpauseZRC20( + goCtx context.Context, + msg *types.MsgUnpauseZRC20, +) (*types.MsgUnpauseZRC20Response, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + if !k.GetAuthorityKeeper().IsAuthorized(ctx, msg.Creator, authoritytypes.PolicyType_groupOperational) { + return nil, cosmoserrors.Wrap( + authoritytypes.ErrUnauthorized, + "UnPauseZRC20 can only be executed by the correct policy account", + ) + } + + // iterate all foreign coins and set unpaused status + for _, zrc20 := range msg.Zrc20Addresses { + fc, found := k.GetForeignCoins(ctx, zrc20) + if !found { + return nil, cosmoserrors.Wrapf(types.ErrForeignCoinNotFound, "foreign coin not found %s", zrc20) + } + // Set status to unpaused + fc.Paused = false + k.SetForeignCoins(ctx, fc) + } + + err := ctx.EventManager().EmitTypedEvent( + &types.EventZRC20Unpaused{ + MsgTypeUrl: sdk.MsgTypeURL(&types.MsgUnpauseZRC20{}), + Zrc20Addresses: msg.Zrc20Addresses, + Signer: msg.Creator, + }, + ) + if err != nil { + k.Logger(ctx).Error("failed to emit event", + "event", "EventZRC20Unpaused", + "error", err.Error(), + ) + return nil, cosmoserrors.Wrapf(types.ErrEmitEvent, "failed to emit event (%s)", err.Error()) + } + + return &types.MsgUnpauseZRC20Response{}, nil +} diff --git a/x/fungible/keeper/msg_server_unpause_zrc20_test.go b/x/fungible/keeper/msg_server_unpause_zrc20_test.go new file mode 100644 index 0000000000..ea90f01e85 --- /dev/null +++ b/x/fungible/keeper/msg_server_unpause_zrc20_test.go @@ -0,0 +1,142 @@ +package keeper_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + keepertest "github.com/zeta-chain/zetacore/testutil/keeper" + "github.com/zeta-chain/zetacore/testutil/sample" + authoritytypes "github.com/zeta-chain/zetacore/x/authority/types" + "github.com/zeta-chain/zetacore/x/fungible/keeper" + "github.com/zeta-chain/zetacore/x/fungible/types" +) + +func TestKeeper_UnpauseZRC20(t *testing.T) { + t.Run("can unpause status of zrc20", func(t *testing.T) { + k, ctx, _, _ := keepertest.FungibleKeeperWithMocks(t, keepertest.FungibleMockOptions{ + UseAuthorityMock: true, + }) + + msgServer := keeper.NewMsgServerImpl(*k) + admin := sample.AccAddress() + authorityMock := keepertest.GetFungibleAuthorityMock(t, k) + + assertUnpaused := func(zrc20 string) { + fc, found := k.GetForeignCoins(ctx, zrc20) + require.True(t, found) + require.False(t, fc.Paused) + } + assertPaused := func(zrc20 string) { + fc, found := k.GetForeignCoins(ctx, zrc20) + require.True(t, found) + require.True(t, fc.Paused) + } + + // setup zrc20 + zrc20A, zrc20B, zrc20C := sample.EthAddress(). + String(), + sample.EthAddress(). + String(), + sample.EthAddress(). + String() + k.SetForeignCoins(ctx, sample.ForeignCoins(t, zrc20A)) + fcB := sample.ForeignCoins(t, zrc20B) + fcB.Paused = true + k.SetForeignCoins(ctx, fcB) + k.SetForeignCoins(ctx, sample.ForeignCoins(t, zrc20C)) + assertUnpaused(zrc20A) + assertPaused(zrc20B) + assertUnpaused(zrc20C) + + keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupOperational, true) + + // can unpause zrc20 + _, err := msgServer.UnpauseZRC20(ctx, types.NewMsgUnpauseZRC20( + admin, + []string{ + zrc20A, + }, + )) + require.NoError(t, err) + assertUnpaused(zrc20A) + assertPaused(zrc20B) + assertUnpaused(zrc20C) + + keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupOperational, true) + + // can unpause already unpaused zrc20 + _, err = msgServer.UnpauseZRC20(ctx, types.NewMsgUnpauseZRC20( + admin, + []string{ + zrc20C, + }, + )) + require.NoError(t, err) + assertUnpaused(zrc20A) + assertPaused(zrc20B) + assertUnpaused(zrc20C) + + keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupOperational, true) + + // can unpause all zrc20 + _, err = msgServer.UnpauseZRC20(ctx, types.NewMsgUnpauseZRC20( + admin, + []string{ + zrc20A, + zrc20B, + zrc20C, + }, + )) + require.NoError(t, err) + assertUnpaused(zrc20A) + assertUnpaused(zrc20B) + assertUnpaused(zrc20C) + }) + + t.Run("should fail if not authorized", func(t *testing.T) { + k, ctx, _, _ := keepertest.FungibleKeeperWithMocks(t, keepertest.FungibleMockOptions{ + UseAuthorityMock: true, + }) + + msgServer := keeper.NewMsgServerImpl(*k) + + admin := sample.AccAddress() + authorityMock := keepertest.GetFungibleAuthorityMock(t, k) + + keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupOperational, false) + + _, err := msgServer.UnpauseZRC20(ctx, types.NewMsgUnpauseZRC20( + admin, + []string{sample.EthAddress().String()}, + )) + + require.ErrorIs(t, err, authoritytypes.ErrUnauthorized) + }) + + t.Run("should fail if zrc20 does not exist", func(t *testing.T) { + k, ctx, _, _ := keepertest.FungibleKeeperWithMocks(t, keepertest.FungibleMockOptions{ + UseAuthorityMock: true, + }) + + msgServer := keeper.NewMsgServerImpl(*k) + + admin := sample.AccAddress() + authorityMock := keepertest.GetFungibleAuthorityMock(t, k) + keepertest.MockIsAuthorized(&authorityMock.Mock, admin, authoritytypes.PolicyType_groupOperational, true) + + zrc20A, zrc20B := sample.EthAddress().String(), sample.EthAddress().String() + k.SetForeignCoins(ctx, sample.ForeignCoins(t, zrc20A)) + k.SetForeignCoins(ctx, sample.ForeignCoins(t, zrc20B)) + + _, err := msgServer.UnpauseZRC20(ctx, types.NewMsgUnpauseZRC20( + admin, + []string{ + zrc20A, + sample.EthAddress().String(), + zrc20B, + }, + )) + require.ErrorIs(t, err, types.ErrForeignCoinNotFound) + }) +} diff --git a/x/fungible/keeper/msg_server_update_zrc20_paused_status.go b/x/fungible/keeper/msg_server_update_zrc20_paused_status.go deleted file mode 100644 index a8a17fe585..0000000000 --- a/x/fungible/keeper/msg_server_update_zrc20_paused_status.go +++ /dev/null @@ -1,74 +0,0 @@ -package keeper - -import ( - "context" - - cosmoserrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - - authoritytypes "github.com/zeta-chain/zetacore/x/authority/types" - "github.com/zeta-chain/zetacore/x/fungible/types" -) - -// UpdateZRC20PausedStatus updates the paused status of a ZRC20 -// The list of ZRC20s are either paused or unpaused -// -// Authorized: admin policy group 1 (pausing), group 2 (pausing & unpausing) -func (k msgServer) UpdateZRC20PausedStatus( - goCtx context.Context, - msg *types.MsgUpdateZRC20PausedStatus, -) (*types.MsgUpdateZRC20PausedStatusResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - // check message validity - if err := msg.ValidateBasic(); err != nil { - return nil, err - } - - // check if the sender is the admin - // unpausing requires operational policy - requiredPolicyAccount := authoritytypes.PolicyType_groupEmergency - if msg.Action == types.UpdatePausedStatusAction_UNPAUSE { - requiredPolicyAccount = authoritytypes.PolicyType_groupOperational - } - if !k.GetAuthorityKeeper().IsAuthorized(ctx, msg.Creator, requiredPolicyAccount) { - return nil, cosmoserrors.Wrap( - authoritytypes.ErrUnauthorized, - "Update can only be executed by the correct policy account", - ) - } - - pausedStatus := true - if msg.Action == types.UpdatePausedStatusAction_UNPAUSE { - pausedStatus = false - } - - // iterate all foreign coins and set paused status - for _, zrc20 := range msg.Zrc20Addresses { - fc, found := k.GetForeignCoins(ctx, zrc20) - if !found { - return nil, cosmoserrors.Wrapf(types.ErrForeignCoinNotFound, "foreign coin not found %s", zrc20) - } - - fc.Paused = pausedStatus - k.SetForeignCoins(ctx, fc) - } - - err := ctx.EventManager().EmitTypedEvent( - &types.EventZRC20PausedStatusUpdated{ - MsgTypeUrl: sdk.MsgTypeURL(&types.MsgUpdateZRC20PausedStatus{}), - Action: msg.Action, - Zrc20Addresses: msg.Zrc20Addresses, - Signer: msg.Creator, - }, - ) - if err != nil { - k.Logger(ctx).Error("failed to emit event", - "event", "EventZRC20PausedStatusUpdated", - "error", err.Error(), - ) - return nil, cosmoserrors.Wrapf(types.ErrEmitEvent, "failed to emit event (%s)", err.Error()) - } - - return &types.MsgUpdateZRC20PausedStatusResponse{}, nil -} diff --git a/x/fungible/types/codec.go b/x/fungible/types/codec.go index ac7fc91429..fd31724336 100644 --- a/x/fungible/types/codec.go +++ b/x/fungible/types/codec.go @@ -14,8 +14,9 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgUpdateSystemContract{}, "fungible/UpdateSystemContract", nil) cdc.RegisterConcrete(&MsgUpdateZRC20WithdrawFee{}, "fungible/UpdateZRC20WithdrawFee", nil) cdc.RegisterConcrete(&MsgUpdateContractBytecode{}, "fungible/UpdateContractBytecode", nil) - cdc.RegisterConcrete(&MsgUpdateZRC20PausedStatus{}, "fungible/UpdateZRC20PausedStatus", nil) cdc.RegisterConcrete(&MsgUpdateZRC20LiquidityCap{}, "fungible/UpdateZRC20LiquidityCap", nil) + cdc.RegisterConcrete(&MsgPauseZRC20{}, "fungible/PauseZRC20", nil) + cdc.RegisterConcrete(&MsgUnpauseZRC20{}, "fungible/UnpauseZRC20", nil) } func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { @@ -26,8 +27,9 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MsgUpdateSystemContract{}, &MsgUpdateZRC20WithdrawFee{}, &MsgUpdateContractBytecode{}, - &MsgUpdateZRC20PausedStatus{}, &MsgUpdateZRC20LiquidityCap{}, + &MsgPauseZRC20{}, + &MsgUnpauseZRC20{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/fungible/types/events.pb.go b/x/fungible/types/events.pb.go index ba43982bc1..41795a24b7 100644 --- a/x/fungible/types/events.pb.go +++ b/x/fungible/types/events.pb.go @@ -308,25 +308,24 @@ func (m *EventZRC20WithdrawFeeUpdated) GetNewGasLimit() string { return "" } -type EventZRC20PausedStatusUpdated struct { - MsgTypeUrl string `protobuf:"bytes,1,opt,name=msg_type_url,json=msgTypeUrl,proto3" json:"msg_type_url,omitempty"` - Zrc20Addresses []string `protobuf:"bytes,2,rep,name=zrc20_addresses,json=zrc20Addresses,proto3" json:"zrc20_addresses,omitempty"` - Action UpdatePausedStatusAction `protobuf:"varint,3,opt,name=action,proto3,enum=zetachain.zetacore.fungible.UpdatePausedStatusAction" json:"action,omitempty"` - Signer string `protobuf:"bytes,4,opt,name=signer,proto3" json:"signer,omitempty"` +type EventZRC20Paused struct { + MsgTypeUrl string `protobuf:"bytes,1,opt,name=msg_type_url,json=msgTypeUrl,proto3" json:"msg_type_url,omitempty"` + Zrc20Addresses []string `protobuf:"bytes,2,rep,name=zrc20_addresses,json=zrc20Addresses,proto3" json:"zrc20_addresses,omitempty"` + Signer string `protobuf:"bytes,3,opt,name=signer,proto3" json:"signer,omitempty"` } -func (m *EventZRC20PausedStatusUpdated) Reset() { *m = EventZRC20PausedStatusUpdated{} } -func (m *EventZRC20PausedStatusUpdated) String() string { return proto.CompactTextString(m) } -func (*EventZRC20PausedStatusUpdated) ProtoMessage() {} -func (*EventZRC20PausedStatusUpdated) Descriptor() ([]byte, []int) { +func (m *EventZRC20Paused) Reset() { *m = EventZRC20Paused{} } +func (m *EventZRC20Paused) String() string { return proto.CompactTextString(m) } +func (*EventZRC20Paused) ProtoMessage() {} +func (*EventZRC20Paused) Descriptor() ([]byte, []int) { return fileDescriptor_1e6611815bc2713b, []int{3} } -func (m *EventZRC20PausedStatusUpdated) XXX_Unmarshal(b []byte) error { +func (m *EventZRC20Paused) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventZRC20PausedStatusUpdated) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventZRC20Paused) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventZRC20PausedStatusUpdated.Marshal(b, m, deterministic) + return xxx_messageInfo_EventZRC20Paused.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -336,40 +335,93 @@ func (m *EventZRC20PausedStatusUpdated) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } -func (m *EventZRC20PausedStatusUpdated) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventZRC20PausedStatusUpdated.Merge(m, src) +func (m *EventZRC20Paused) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventZRC20Paused.Merge(m, src) } -func (m *EventZRC20PausedStatusUpdated) XXX_Size() int { +func (m *EventZRC20Paused) XXX_Size() int { return m.Size() } -func (m *EventZRC20PausedStatusUpdated) XXX_DiscardUnknown() { - xxx_messageInfo_EventZRC20PausedStatusUpdated.DiscardUnknown(m) +func (m *EventZRC20Paused) XXX_DiscardUnknown() { + xxx_messageInfo_EventZRC20Paused.DiscardUnknown(m) } -var xxx_messageInfo_EventZRC20PausedStatusUpdated proto.InternalMessageInfo +var xxx_messageInfo_EventZRC20Paused proto.InternalMessageInfo -func (m *EventZRC20PausedStatusUpdated) GetMsgTypeUrl() string { +func (m *EventZRC20Paused) GetMsgTypeUrl() string { if m != nil { return m.MsgTypeUrl } return "" } -func (m *EventZRC20PausedStatusUpdated) GetZrc20Addresses() []string { +func (m *EventZRC20Paused) GetZrc20Addresses() []string { if m != nil { return m.Zrc20Addresses } return nil } -func (m *EventZRC20PausedStatusUpdated) GetAction() UpdatePausedStatusAction { +func (m *EventZRC20Paused) GetSigner() string { if m != nil { - return m.Action + return m.Signer + } + return "" +} + +type EventZRC20Unpaused struct { + MsgTypeUrl string `protobuf:"bytes,1,opt,name=msg_type_url,json=msgTypeUrl,proto3" json:"msg_type_url,omitempty"` + Zrc20Addresses []string `protobuf:"bytes,2,rep,name=zrc20_addresses,json=zrc20Addresses,proto3" json:"zrc20_addresses,omitempty"` + Signer string `protobuf:"bytes,3,opt,name=signer,proto3" json:"signer,omitempty"` +} + +func (m *EventZRC20Unpaused) Reset() { *m = EventZRC20Unpaused{} } +func (m *EventZRC20Unpaused) String() string { return proto.CompactTextString(m) } +func (*EventZRC20Unpaused) ProtoMessage() {} +func (*EventZRC20Unpaused) Descriptor() ([]byte, []int) { + return fileDescriptor_1e6611815bc2713b, []int{4} +} +func (m *EventZRC20Unpaused) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventZRC20Unpaused) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventZRC20Unpaused.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return UpdatePausedStatusAction_PAUSE +} +func (m *EventZRC20Unpaused) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventZRC20Unpaused.Merge(m, src) +} +func (m *EventZRC20Unpaused) XXX_Size() int { + return m.Size() +} +func (m *EventZRC20Unpaused) XXX_DiscardUnknown() { + xxx_messageInfo_EventZRC20Unpaused.DiscardUnknown(m) +} + +var xxx_messageInfo_EventZRC20Unpaused proto.InternalMessageInfo + +func (m *EventZRC20Unpaused) GetMsgTypeUrl() string { + if m != nil { + return m.MsgTypeUrl + } + return "" } -func (m *EventZRC20PausedStatusUpdated) GetSigner() string { +func (m *EventZRC20Unpaused) GetZrc20Addresses() []string { + if m != nil { + return m.Zrc20Addresses + } + return nil +} + +func (m *EventZRC20Unpaused) GetSigner() string { if m != nil { return m.Signer } @@ -390,7 +442,7 @@ func (m *EventSystemContractsDeployed) Reset() { *m = EventSystemContrac func (m *EventSystemContractsDeployed) String() string { return proto.CompactTextString(m) } func (*EventSystemContractsDeployed) ProtoMessage() {} func (*EventSystemContractsDeployed) Descriptor() ([]byte, []int) { - return fileDescriptor_1e6611815bc2713b, []int{4} + return fileDescriptor_1e6611815bc2713b, []int{5} } func (m *EventSystemContractsDeployed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -480,7 +532,7 @@ func (m *EventBytecodeUpdated) Reset() { *m = EventBytecodeUpdated{} } func (m *EventBytecodeUpdated) String() string { return proto.CompactTextString(m) } func (*EventBytecodeUpdated) ProtoMessage() {} func (*EventBytecodeUpdated) Descriptor() ([]byte, []int) { - return fileDescriptor_1e6611815bc2713b, []int{5} + return fileDescriptor_1e6611815bc2713b, []int{6} } func (m *EventBytecodeUpdated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -548,7 +600,8 @@ func init() { proto.RegisterType((*EventSystemContractUpdated)(nil), "zetachain.zetacore.fungible.EventSystemContractUpdated") proto.RegisterType((*EventZRC20Deployed)(nil), "zetachain.zetacore.fungible.EventZRC20Deployed") proto.RegisterType((*EventZRC20WithdrawFeeUpdated)(nil), "zetachain.zetacore.fungible.EventZRC20WithdrawFeeUpdated") - proto.RegisterType((*EventZRC20PausedStatusUpdated)(nil), "zetachain.zetacore.fungible.EventZRC20PausedStatusUpdated") + proto.RegisterType((*EventZRC20Paused)(nil), "zetachain.zetacore.fungible.EventZRC20Paused") + proto.RegisterType((*EventZRC20Unpaused)(nil), "zetachain.zetacore.fungible.EventZRC20Unpaused") proto.RegisterType((*EventSystemContractsDeployed)(nil), "zetachain.zetacore.fungible.EventSystemContractsDeployed") proto.RegisterType((*EventBytecodeUpdated)(nil), "zetachain.zetacore.fungible.EventBytecodeUpdated") } @@ -558,56 +611,55 @@ func init() { } var fileDescriptor_1e6611815bc2713b = []byte{ - // 775 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xdd, 0x4e, 0xe3, 0x46, - 0x14, 0xc6, 0x04, 0x02, 0x19, 0x7e, 0x02, 0xa3, 0xa8, 0x72, 0x43, 0x1b, 0xa1, 0xb4, 0xb4, 0x29, - 0x6a, 0x1d, 0x94, 0xaa, 0x0f, 0x00, 0xb4, 0xb4, 0x48, 0xad, 0x54, 0x85, 0xd2, 0x4a, 0xdc, 0x58, - 0x13, 0xfb, 0xe0, 0x58, 0xd8, 0x33, 0x96, 0x67, 0x12, 0x63, 0x9e, 0xa2, 0x97, 0xfb, 0x10, 0xfb, - 0x04, 0xfb, 0x04, 0x7b, 0xc9, 0x6a, 0x6f, 0xf6, 0x72, 0x05, 0x2f, 0xb1, 0x97, 0xab, 0x19, 0x8f, - 0x1d, 0x9b, 0x05, 0x04, 0x7b, 0x13, 0xcd, 0x99, 0x7c, 0xe7, 0x9c, 0xef, 0x7c, 0xfe, 0x66, 0x06, - 0xf5, 0xae, 0x40, 0x10, 0x67, 0x4c, 0x7c, 0xda, 0x57, 0x2b, 0x16, 0x43, 0xff, 0x7c, 0x42, 0x3d, - 0x7f, 0x14, 0x40, 0x1f, 0xa6, 0x40, 0x05, 0xb7, 0xa2, 0x98, 0x09, 0x86, 0xb7, 0x0a, 0xa4, 0x95, - 0x23, 0xad, 0x1c, 0xd9, 0xfe, 0xf6, 0xb1, 0x32, 0xe2, 0x32, 0x2b, 0xd1, 0x6e, 0x79, 0xcc, 0x63, - 0x6a, 0xd9, 0x97, 0x2b, 0xbd, 0xfb, 0xdd, 0x3d, 0xb9, 0xd1, 0x85, 0xd7, 0x77, 0x98, 0x4f, 0xd5, - 0x4f, 0x86, 0xeb, 0xbe, 0x32, 0x50, 0xfb, 0x37, 0xc9, 0xe8, 0x24, 0xe5, 0x02, 0xc2, 0x43, 0x46, - 0x45, 0x4c, 0x1c, 0x71, 0x1a, 0xb9, 0x44, 0x80, 0x8b, 0xb7, 0xd1, 0x6a, 0xc8, 0x3d, 0x5b, 0xa4, - 0x11, 0xd8, 0x93, 0x38, 0x30, 0x8d, 0x6d, 0xa3, 0xd7, 0x18, 0xa2, 0x90, 0x7b, 0xff, 0xa4, 0x11, - 0x9c, 0xc6, 0x01, 0xde, 0x43, 0x2d, 0x0a, 0x89, 0xed, 0xe8, 0x44, 0x9b, 0xb8, 0x6e, 0x0c, 0x9c, - 0x9b, 0xf3, 0x0a, 0x89, 0x29, 0x24, 0x79, 0xcd, 0xfd, 0xec, 0x1f, 0x99, 0xc1, 0x02, 0xf7, 0xd3, - 0x8c, 0x5a, 0x96, 0xc1, 0x02, 0xf7, 0x6e, 0xc6, 0x17, 0xa8, 0xce, 0x7d, 0x8f, 0x42, 0x6c, 0x2e, - 0x28, 0x8c, 0x8e, 0xba, 0x2f, 0xe7, 0x11, 0x56, 0xe4, 0xcf, 0x86, 0x87, 0x83, 0xbd, 0x5f, 0x21, - 0x0a, 0x58, 0xfa, 0x24, 0xd2, 0x5f, 0xa2, 0x65, 0xa5, 0x8d, 0xed, 0xbb, 0x8a, 0x68, 0x6d, 0xb8, - 0xa4, 0xe2, 0x63, 0x17, 0xb7, 0xd1, 0x72, 0xce, 0x4c, 0x33, 0x2a, 0x62, 0x8c, 0xd1, 0x02, 0x25, - 0x21, 0x68, 0x16, 0x6a, 0xad, 0xb8, 0xa5, 0xe1, 0x88, 0x05, 0xe6, 0xa2, 0xe6, 0xa6, 0x22, 0x59, - 0xc7, 0x05, 0xc7, 0x0f, 0x49, 0xc0, 0xcd, 0xba, 0x6a, 0x51, 0xc4, 0xf8, 0x00, 0x35, 0xe4, 0x27, - 0x50, 0x0c, 0xcd, 0xa5, 0x6d, 0xa3, 0xb7, 0x3e, 0xd8, 0xb1, 0xee, 0x71, 0x42, 0x74, 0xe1, 0x59, - 0xea, 0x5b, 0x1d, 0x32, 0x9f, 0x4a, 0xee, 0x92, 0x4b, 0xb6, 0xc2, 0x2d, 0xb4, 0x08, 0xb1, 0x33, - 0xd8, 0x33, 0x97, 0x55, 0xdb, 0x2c, 0xc0, 0x5b, 0xa8, 0xe1, 0x11, 0x6e, 0x07, 0x7e, 0xe8, 0x0b, - 0xb3, 0x91, 0xb5, 0xf5, 0x08, 0xff, 0x53, 0xc6, 0xdd, 0x0f, 0xf3, 0xe8, 0xab, 0x99, 0x5c, 0xff, - 0xf9, 0x62, 0xec, 0xc6, 0x24, 0x39, 0x02, 0x78, 0xfa, 0xd7, 0x7e, 0x44, 0xb8, 0xca, 0x50, 0xb5, - 0xcf, 0x1b, 0xea, 0x1b, 0xb4, 0x76, 0x25, 0xe7, 0x28, 0x3c, 0x91, 0x29, 0xbd, 0xaa, 0x36, 0x73, - 0x37, 0xf4, 0xd0, 0x86, 0xf4, 0x4f, 0xa2, 0xf9, 0xdb, 0xe7, 0x00, 0x5a, 0xfb, 0x75, 0x16, 0xb8, - 0xa5, 0xb1, 0x24, 0x52, 0x7a, 0xb3, 0x82, 0xac, 0x67, 0x48, 0x0a, 0x49, 0x19, 0x39, 0x73, 0xd8, - 0x52, 0xd9, 0x61, 0xb8, 0x8b, 0xd6, 0x64, 0xaf, 0x99, 0xa6, 0x99, 0xda, 0x2b, 0x2c, 0x70, 0x7f, - 0xd7, 0xb2, 0x4a, 0x8c, 0xec, 0x52, 0xd5, 0xbd, 0x31, 0x5c, 0xa1, 0x90, 0xe4, 0x98, 0xee, 0x1b, - 0x03, 0x7d, 0x3d, 0x93, 0xfe, 0x6f, 0x32, 0xe1, 0xe0, 0x9e, 0x08, 0x22, 0x26, 0xfc, 0xe9, 0xda, - 0x7f, 0x8f, 0x9a, 0x15, 0x71, 0x40, 0x1e, 0xb2, 0x9a, 0x1c, 0xa6, 0x2c, 0x0f, 0x70, 0xfc, 0x17, - 0xaa, 0x13, 0x47, 0xf8, 0x8c, 0xea, 0xcf, 0xf0, 0x8b, 0xf5, 0xc8, 0x2d, 0x63, 0x65, 0x04, 0xca, - 0x94, 0xf6, 0x55, 0xf2, 0x50, 0x17, 0x79, 0xf0, 0xf4, 0xbd, 0xc8, 0xed, 0x54, 0xbd, 0x3a, 0xf8, - 0x33, 0xce, 0xe1, 0x8f, 0x08, 0x4f, 0xa8, 0xcf, 0x13, 0x12, 0xd9, 0xd3, 0x81, 0x7d, 0x4e, 0x1c, - 0xc1, 0xe2, 0x54, 0x5f, 0x1d, 0x1b, 0xfa, 0x9f, 0x7f, 0x07, 0x47, 0xd9, 0xbe, 0xb4, 0x7c, 0x22, - 0xf9, 0xeb, 0x73, 0x99, 0x05, 0x78, 0x17, 0x6d, 0x96, 0x6a, 0xc4, 0x6c, 0x22, 0x0a, 0xa6, 0xcd, - 0xa2, 0xc4, 0x50, 0x6d, 0xe3, 0x1d, 0xb4, 0xee, 0x30, 0x4a, 0x41, 0xd6, 0xb3, 0xaf, 0x60, 0x1a, - 0x6a, 0xe3, 0xac, 0x15, 0xbb, 0x67, 0x30, 0x0d, 0xa5, 0xd2, 0x5c, 0xcd, 0x54, 0x5c, 0x52, 0xb9, - 0x6d, 0x78, 0x65, 0xd4, 0x87, 0x6c, 0xd3, 0x7d, 0x6b, 0xa0, 0x96, 0x92, 0xe6, 0x20, 0x15, 0xe0, - 0x30, 0xf7, 0x19, 0x27, 0xec, 0x07, 0xb4, 0xf1, 0xc0, 0x5d, 0xda, 0x74, 0xee, 0x5c, 0x8b, 0xbb, - 0x68, 0x53, 0x1a, 0x6f, 0xa4, 0x7b, 0xd8, 0x63, 0xc2, 0xc7, 0x5a, 0x9b, 0x26, 0x85, 0x24, 0xef, - 0xfd, 0x07, 0xe1, 0x63, 0x89, 0x95, 0x46, 0xae, 0x62, 0xb5, 0x4a, 0x2c, 0x70, 0x2b, 0xd8, 0xd9, - 0x54, 0x8b, 0xe5, 0xa9, 0x0e, 0x8e, 0x5f, 0xdf, 0x74, 0x8c, 0xeb, 0x9b, 0x8e, 0xf1, 0xfe, 0xa6, - 0x63, 0xfc, 0x7f, 0xdb, 0x99, 0xbb, 0xbe, 0xed, 0xcc, 0xbd, 0xbb, 0xed, 0xcc, 0x9d, 0xf5, 0x3d, - 0x5f, 0x8c, 0x27, 0x23, 0xcb, 0x61, 0xa1, 0x7a, 0x6e, 0x7e, 0xba, 0xf3, 0xf2, 0x5c, 0x96, 0xde, - 0xad, 0x34, 0x02, 0x3e, 0xaa, 0xab, 0xd7, 0xe7, 0xe7, 0x8f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf7, - 0x23, 0x3a, 0xee, 0x2a, 0x07, 0x00, 0x00, + // 754 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xdd, 0x4e, 0xdb, 0x48, + 0x14, 0xc6, 0x04, 0x02, 0x19, 0x7e, 0x12, 0x46, 0xd1, 0xca, 0x1b, 0x56, 0x11, 0xca, 0x2e, 0xbb, + 0x59, 0xb4, 0x9b, 0xa0, 0xf4, 0x09, 0x0a, 0x2d, 0x2d, 0x52, 0x2f, 0xaa, 0xb4, 0xb4, 0x12, 0x37, + 0xd6, 0xc4, 0x3e, 0x38, 0x16, 0xf6, 0x8c, 0xe5, 0x99, 0xc4, 0x98, 0xa7, 0xe8, 0x65, 0x1f, 0xa2, + 0x4f, 0xd0, 0x27, 0xe8, 0x25, 0x52, 0x6f, 0x7a, 0x59, 0xc1, 0x4b, 0xf4, 0xb2, 0x9a, 0xf1, 0xd8, + 0xb1, 0x29, 0x20, 0xe8, 0x45, 0x6f, 0xa2, 0x39, 0x93, 0x6f, 0xce, 0xf9, 0xce, 0xe7, 0xef, 0xcc, + 0xa0, 0xee, 0x39, 0x08, 0x62, 0x8f, 0x89, 0x47, 0xfb, 0x6a, 0xc5, 0x22, 0xe8, 0x9f, 0x4c, 0xa8, + 0xeb, 0x8d, 0x7c, 0xe8, 0xc3, 0x14, 0xa8, 0xe0, 0xbd, 0x30, 0x62, 0x82, 0xe1, 0xcd, 0x1c, 0xd9, + 0xcb, 0x90, 0xbd, 0x0c, 0xd9, 0xfa, 0xeb, 0xae, 0x34, 0xe2, 0x2c, 0x4d, 0xd1, 0x6a, 0xba, 0xcc, + 0x65, 0x6a, 0xd9, 0x97, 0x2b, 0xbd, 0xfb, 0xf7, 0x0d, 0x67, 0xc3, 0x53, 0xb7, 0x6f, 0x33, 0x8f, + 0xaa, 0x9f, 0x14, 0xd7, 0xf9, 0x68, 0xa0, 0xd6, 0x53, 0xc9, 0xe8, 0x55, 0xc2, 0x05, 0x04, 0xfb, + 0x8c, 0x8a, 0x88, 0xd8, 0xe2, 0x28, 0x74, 0x88, 0x00, 0x07, 0x6f, 0xa1, 0xd5, 0x80, 0xbb, 0x96, + 0x48, 0x42, 0xb0, 0x26, 0x91, 0x6f, 0x1a, 0x5b, 0x46, 0xb7, 0x36, 0x44, 0x01, 0x77, 0x5f, 0x27, + 0x21, 0x1c, 0x45, 0x3e, 0xde, 0x45, 0x4d, 0x0a, 0xb1, 0x65, 0xeb, 0x83, 0x16, 0x71, 0x9c, 0x08, + 0x38, 0x37, 0xe7, 0x15, 0x12, 0x53, 0x88, 0xb3, 0x9c, 0x8f, 0xd3, 0x7f, 0xe4, 0x09, 0xe6, 0x3b, + 0x3f, 0x9e, 0xa8, 0xa4, 0x27, 0x98, 0xef, 0x5c, 0x3f, 0xf1, 0x1b, 0xaa, 0x72, 0xcf, 0xa5, 0x10, + 0x99, 0x0b, 0x0a, 0xa3, 0xa3, 0xce, 0x87, 0x79, 0x84, 0x15, 0xf9, 0xe3, 0xe1, 0xfe, 0x60, 0xf7, + 0x09, 0x84, 0x3e, 0x4b, 0xee, 0x45, 0xfa, 0x77, 0xb4, 0xac, 0xb4, 0xb1, 0x3c, 0x47, 0x11, 0xad, + 0x0c, 0x97, 0x54, 0x7c, 0xe8, 0xe0, 0x16, 0x5a, 0xce, 0x98, 0x69, 0x46, 0x79, 0x8c, 0x31, 0x5a, + 0xa0, 0x24, 0x00, 0xcd, 0x42, 0xad, 0x15, 0xb7, 0x24, 0x18, 0x31, 0xdf, 0x5c, 0xd4, 0xdc, 0x54, + 0x24, 0xf3, 0x38, 0x60, 0x7b, 0x01, 0xf1, 0xb9, 0x59, 0x55, 0x25, 0xf2, 0x18, 0xef, 0xa1, 0x9a, + 0xfc, 0x04, 0x8a, 0xa1, 0xb9, 0xb4, 0x65, 0x74, 0xd7, 0x07, 0xdb, 0xbd, 0x1b, 0x9c, 0x10, 0x9e, + 0xba, 0x3d, 0xf5, 0xad, 0xf6, 0x99, 0x47, 0x25, 0x77, 0xc9, 0x25, 0x5d, 0xe1, 0x26, 0x5a, 0x84, + 0xc8, 0x1e, 0xec, 0x9a, 0xcb, 0xaa, 0x6c, 0x1a, 0xe0, 0x4d, 0x54, 0x73, 0x09, 0xb7, 0x7c, 0x2f, + 0xf0, 0x84, 0x59, 0x4b, 0xcb, 0xba, 0x84, 0xbf, 0x90, 0x71, 0xe7, 0xdb, 0x3c, 0xfa, 0x63, 0x26, + 0xd7, 0x5b, 0x4f, 0x8c, 0x9d, 0x88, 0xc4, 0x07, 0x00, 0xf7, 0xff, 0xda, 0x77, 0x08, 0x57, 0x6a, + 0xaa, 0xf2, 0x73, 0x4d, 0xfd, 0x89, 0xd6, 0xce, 0x65, 0x1f, 0xb9, 0x27, 0x52, 0xa5, 0x57, 0xd5, + 0x66, 0xe6, 0x86, 0x2e, 0x6a, 0x48, 0xff, 0xc4, 0x9a, 0xbf, 0x75, 0x02, 0xa0, 0xb5, 0x5f, 0x67, + 0xbe, 0x53, 0x68, 0x4b, 0x22, 0xa5, 0x37, 0x4b, 0xc8, 0x6a, 0x8a, 0xa4, 0x10, 0x17, 0x91, 0x33, + 0x87, 0x2d, 0x15, 0x1d, 0x86, 0x3b, 0x68, 0x4d, 0xd6, 0x9a, 0x69, 0x9a, 0xaa, 0xbd, 0xc2, 0x7c, + 0xe7, 0x99, 0x96, 0x55, 0x62, 0x64, 0x95, 0xb2, 0xee, 0xb5, 0xe1, 0x0a, 0x85, 0x38, 0xc3, 0x74, + 0x26, 0xa8, 0x31, 0x53, 0xfe, 0x25, 0x99, 0xf0, 0x7b, 0xa9, 0xfd, 0x0f, 0xaa, 0x97, 0xe4, 0x00, + 0x39, 0x56, 0x15, 0x49, 0xbf, 0x28, 0x08, 0x14, 0x07, 0xa4, 0x52, 0x1a, 0x90, 0xb8, 0x38, 0x1f, + 0x47, 0x34, 0xfc, 0x65, 0x85, 0xdf, 0x67, 0x56, 0x2b, 0x5f, 0x2b, 0xfc, 0x01, 0x33, 0xfa, 0x1f, + 0xc2, 0x13, 0xea, 0xf1, 0x98, 0x84, 0xd6, 0x74, 0x60, 0x9d, 0x10, 0x5b, 0xb0, 0x28, 0xd1, 0xd7, + 0x4a, 0x43, 0xff, 0xf3, 0x66, 0x70, 0x90, 0xee, 0xcb, 0x71, 0x88, 0xa5, 0xc5, 0x34, 0x8f, 0x34, + 0xc0, 0x3b, 0x68, 0xa3, 0x90, 0x23, 0x62, 0x13, 0x91, 0xdf, 0x21, 0xf5, 0x3c, 0xc5, 0x50, 0x6d, + 0xe3, 0x6d, 0xb4, 0x6e, 0x33, 0x4a, 0x41, 0xe6, 0xb3, 0xce, 0x61, 0x1a, 0x68, 0x53, 0xad, 0xe5, + 0xbb, 0xc7, 0x30, 0x0d, 0xa4, 0x34, 0x5c, 0xf5, 0x94, 0x5f, 0x60, 0x99, 0xa5, 0x78, 0xa9, 0xd5, + 0xdb, 0x2c, 0xd5, 0xf9, 0x6c, 0xa0, 0xa6, 0x92, 0x66, 0x2f, 0x11, 0x60, 0x33, 0xe7, 0x01, 0xd3, + 0xf7, 0x2f, 0x6a, 0xdc, 0x72, 0xcf, 0xd6, 0xed, 0x6b, 0x57, 0xe6, 0x0e, 0xda, 0x90, 0xa6, 0x1c, + 0xe9, 0x1a, 0xd6, 0x98, 0xf0, 0xb1, 0xd6, 0xa6, 0x4e, 0x21, 0xce, 0x6a, 0x3f, 0x27, 0x7c, 0x2c, + 0xb1, 0xd2, 0xe4, 0x65, 0xac, 0x56, 0x89, 0xf9, 0x4e, 0x09, 0x3b, 0xeb, 0x6a, 0xb1, 0xd8, 0xd5, + 0xde, 0xe1, 0xa7, 0xcb, 0xb6, 0x71, 0x71, 0xd9, 0x36, 0xbe, 0x5e, 0xb6, 0x8d, 0x77, 0x57, 0xed, + 0xb9, 0x8b, 0xab, 0xf6, 0xdc, 0x97, 0xab, 0xf6, 0xdc, 0x71, 0xdf, 0xf5, 0xc4, 0x78, 0x32, 0xea, + 0xd9, 0x2c, 0x50, 0x4f, 0xd1, 0xff, 0xd7, 0x5e, 0xa5, 0xb3, 0xc2, 0x9b, 0x96, 0x84, 0xc0, 0x47, + 0x55, 0xf5, 0x32, 0x3d, 0xfa, 0x1e, 0x00, 0x00, 0xff, 0xff, 0x55, 0x3b, 0x93, 0x8b, 0x46, 0x07, + 0x00, 0x00, } func (m *EventSystemContractUpdated) Marshal() (dAtA []byte, err error) { @@ -821,7 +873,7 @@ func (m *EventZRC20WithdrawFeeUpdated) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } -func (m *EventZRC20PausedStatusUpdated) Marshal() (dAtA []byte, err error) { +func (m *EventZRC20Paused) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -831,12 +883,12 @@ func (m *EventZRC20PausedStatusUpdated) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventZRC20PausedStatusUpdated) MarshalTo(dAtA []byte) (int, error) { +func (m *EventZRC20Paused) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventZRC20PausedStatusUpdated) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventZRC20Paused) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -846,12 +898,53 @@ func (m *EventZRC20PausedStatusUpdated) MarshalToSizedBuffer(dAtA []byte) (int, copy(dAtA[i:], m.Signer) i = encodeVarintEvents(dAtA, i, uint64(len(m.Signer))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x1a } - if m.Action != 0 { - i = encodeVarintEvents(dAtA, i, uint64(m.Action)) + if len(m.Zrc20Addresses) > 0 { + for iNdEx := len(m.Zrc20Addresses) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Zrc20Addresses[iNdEx]) + copy(dAtA[i:], m.Zrc20Addresses[iNdEx]) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Zrc20Addresses[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.MsgTypeUrl) > 0 { + i -= len(m.MsgTypeUrl) + copy(dAtA[i:], m.MsgTypeUrl) + i = encodeVarintEvents(dAtA, i, uint64(len(m.MsgTypeUrl))) i-- - dAtA[i] = 0x18 + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *EventZRC20Unpaused) 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 *EventZRC20Unpaused) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventZRC20Unpaused) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Signer) > 0 { + i -= len(m.Signer) + copy(dAtA[i:], m.Signer) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Signer))) + i-- + dAtA[i] = 0x1a } if len(m.Zrc20Addresses) > 0 { for iNdEx := len(m.Zrc20Addresses) - 1; iNdEx >= 0; iNdEx-- { @@ -1122,7 +1215,7 @@ func (m *EventZRC20WithdrawFeeUpdated) Size() (n int) { return n } -func (m *EventZRC20PausedStatusUpdated) Size() (n int) { +func (m *EventZRC20Paused) Size() (n int) { if m == nil { return 0 } @@ -1138,8 +1231,28 @@ func (m *EventZRC20PausedStatusUpdated) Size() (n int) { n += 1 + l + sovEvents(uint64(l)) } } - if m.Action != 0 { - n += 1 + sovEvents(uint64(m.Action)) + l = len(m.Signer) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + return n +} + +func (m *EventZRC20Unpaused) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.MsgTypeUrl) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + if len(m.Zrc20Addresses) > 0 { + for _, s := range m.Zrc20Addresses { + l = len(s) + n += 1 + l + sovEvents(uint64(l)) + } } l = len(m.Signer) if l > 0 { @@ -1996,7 +2109,7 @@ func (m *EventZRC20WithdrawFeeUpdated) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventZRC20PausedStatusUpdated) Unmarshal(dAtA []byte) error { +func (m *EventZRC20Paused) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2019,10 +2132,10 @@ func (m *EventZRC20PausedStatusUpdated) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventZRC20PausedStatusUpdated: wiretype end group for non-group") + return fmt.Errorf("proto: EventZRC20Paused: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventZRC20PausedStatusUpdated: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventZRC20Paused: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2090,10 +2203,10 @@ func (m *EventZRC20PausedStatusUpdated) Unmarshal(dAtA []byte) error { m.Zrc20Addresses = append(m.Zrc20Addresses, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) } - m.Action = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -2103,12 +2216,139 @@ func (m *EventZRC20PausedStatusUpdated) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Action |= UpdatePausedStatusAction(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 4: + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EventZRC20Unpaused) 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 ErrIntOverflowEvents + } + 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: EventZRC20Unpaused: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventZRC20Unpaused: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MsgTypeUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + 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 ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MsgTypeUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Zrc20Addresses", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + 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 ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Zrc20Addresses = append(m.Zrc20Addresses, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) } diff --git a/x/fungible/types/message_update_zrc20_paused_status.go b/x/fungible/types/message_pause_zrc20.go similarity index 54% rename from x/fungible/types/message_update_zrc20_paused_status.go rename to x/fungible/types/message_pause_zrc20.go index cbffdf0324..48adefdd06 100644 --- a/x/fungible/types/message_update_zrc20_paused_status.go +++ b/x/fungible/types/message_pause_zrc20.go @@ -7,31 +7,26 @@ import ( ethcommon "github.com/ethereum/go-ethereum/common" ) -const TypeMsgUpdateZRC20PausedStatus = "update_zrc20_withdraw_fee" +const TypeMsgPauseZrc20 = "pause_zrc20" -var _ sdk.Msg = &MsgUpdateZRC20PausedStatus{} +var _ sdk.Msg = &MsgPauseZRC20{} -func NewMsgUpdateZRC20PausedStatus( - creator string, - zrc20 []string, - action UpdatePausedStatusAction, -) *MsgUpdateZRC20PausedStatus { - return &MsgUpdateZRC20PausedStatus{ +func NewMsgPauseZRC20(creator string, zrc20 []string) *MsgPauseZRC20 { + return &MsgPauseZRC20{ Creator: creator, Zrc20Addresses: zrc20, - Action: action, } } -func (msg *MsgUpdateZRC20PausedStatus) Route() string { +func (msg *MsgPauseZRC20) Route() string { return RouterKey } -func (msg *MsgUpdateZRC20PausedStatus) Type() string { - return TypeMsgUpdateZRC20PausedStatus +func (msg *MsgPauseZRC20) Type() string { + return TypeMsgPauseZrc20 } -func (msg *MsgUpdateZRC20PausedStatus) GetSigners() []sdk.AccAddress { +func (msg *MsgPauseZRC20) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { panic(err) @@ -39,21 +34,17 @@ func (msg *MsgUpdateZRC20PausedStatus) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{creator} } -func (msg *MsgUpdateZRC20PausedStatus) GetSignBytes() []byte { +func (msg *MsgPauseZRC20) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) } -func (msg *MsgUpdateZRC20PausedStatus) ValidateBasic() error { +func (msg *MsgPauseZRC20) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { return cosmoserrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) } - if msg.Action != UpdatePausedStatusAction_PAUSE && msg.Action != UpdatePausedStatusAction_UNPAUSE { - return cosmoserrors.Wrapf(sdkerrors.ErrInvalidRequest, "invalid action (%d)", msg.Action) - } - if len(msg.Zrc20Addresses) == 0 { return cosmoserrors.Wrap(sdkerrors.ErrInvalidRequest, "no zrc20 to update") } diff --git a/x/fungible/types/message_update_zrc20_paused_status_test.go b/x/fungible/types/message_pause_zrc20_test.go similarity index 61% rename from x/fungible/types/message_update_zrc20_paused_status_test.go rename to x/fungible/types/message_pause_zrc20_test.go index 691585711f..a6b6e1fda8 100644 --- a/x/fungible/types/message_update_zrc20_paused_status_test.go +++ b/x/fungible/types/message_pause_zrc20_test.go @@ -10,83 +10,65 @@ import ( "github.com/zeta-chain/zetacore/x/fungible/types" ) -func TestMMsgUpdateZRC20PausedStatus_ValidateBasic(t *testing.T) { +func TestMsgPauseZRC20_ValidateBasic(t *testing.T) { tt := []struct { name string - msg *types.MsgUpdateZRC20PausedStatus + msg *types.MsgPauseZRC20 wantErr bool }{ { name: "valid pause message", - msg: types.NewMsgUpdateZRC20PausedStatus( + msg: types.NewMsgPauseZRC20( sample.AccAddress(), []string{ sample.EthAddress().String(), sample.EthAddress().String(), sample.EthAddress().String(), }, - types.UpdatePausedStatusAction_PAUSE, ), wantErr: false, }, { name: "valid unpause message", - msg: types.NewMsgUpdateZRC20PausedStatus( + msg: types.NewMsgPauseZRC20( sample.AccAddress(), []string{ sample.EthAddress().String(), sample.EthAddress().String(), sample.EthAddress().String(), }, - types.UpdatePausedStatusAction_UNPAUSE, ), wantErr: false, }, { name: "invalid creator address", - msg: types.NewMsgUpdateZRC20PausedStatus( + msg: types.NewMsgPauseZRC20( "invalid", []string{ sample.EthAddress().String(), sample.EthAddress().String(), sample.EthAddress().String(), }, - types.UpdatePausedStatusAction_PAUSE, ), wantErr: true, }, { name: "invalid empty zrc20 address", - msg: types.NewMsgUpdateZRC20PausedStatus( + msg: types.NewMsgPauseZRC20( sample.AccAddress(), []string{}, - types.UpdatePausedStatusAction_PAUSE, ), wantErr: true, }, { name: "invalid zrc20 address", - msg: types.NewMsgUpdateZRC20PausedStatus( + msg: types.NewMsgPauseZRC20( sample.AccAddress(), []string{ sample.EthAddress().String(), "invalid", sample.EthAddress().String(), }, - types.UpdatePausedStatusAction_PAUSE, - ), - wantErr: true, - }, - { - name: "invalid action", - msg: types.NewMsgUpdateZRC20PausedStatus( - sample.AccAddress(), - []string{ - sample.EthAddress().String(), - sample.EthAddress().String(), - sample.EthAddress().String(), - }, - 3, ), wantErr: true, }, @@ -104,23 +86,23 @@ func TestMMsgUpdateZRC20PausedStatus_ValidateBasic(t *testing.T) { } } -func TestMMsgUpdateZRC20PausedStatus_GetSigners(t *testing.T) { +func TestMsgPauseZRC20_GetSigners(t *testing.T) { signer := sample.AccAddress() tests := []struct { name string - msg types.MsgUpdateZRC20PausedStatus + msg types.MsgPauseZRC20 panics bool }{ { name: "valid signer", - msg: types.MsgUpdateZRC20PausedStatus{ + msg: types.MsgPauseZRC20{ Creator: signer, }, panics: false, }, { name: "invalid signer", - msg: types.MsgUpdateZRC20PausedStatus{ + msg: types.MsgPauseZRC20{ Creator: "invalid", }, panics: true, @@ -141,22 +123,22 @@ func TestMMsgUpdateZRC20PausedStatus_GetSigners(t *testing.T) { } } -func TestMMsgUpdateZRC20PausedStatus_Type(t *testing.T) { - msg := types.MsgUpdateZRC20PausedStatus{ +func TestMsgPauseZRC20_Type(t *testing.T) { + msg := types.MsgPauseZRC20{ Creator: sample.AccAddress(), } - require.Equal(t, types.TypeMsgUpdateZRC20PausedStatus, msg.Type()) + require.Equal(t, types.TypeMsgPauseZrc20, msg.Type()) } -func TestMMsgUpdateZRC20PausedStatus_Route(t *testing.T) { - msg := types.MsgUpdateZRC20PausedStatus{ +func TestMsgPauseZRC20_Route(t *testing.T) { + msg := types.MsgPauseZRC20{ Creator: sample.AccAddress(), } require.Equal(t, types.RouterKey, msg.Route()) } -func TestMMsgUpdateZRC20PausedStatus_GetSignBytes(t *testing.T) { - msg := types.MsgUpdateZRC20PausedStatus{ +func TestMsgPauseZRC20_GetSignBytes(t *testing.T) { + msg := types.MsgPauseZRC20{ Creator: sample.AccAddress(), } require.NotPanics(t, func() { diff --git a/x/fungible/types/message_unpause_zrc20.go b/x/fungible/types/message_unpause_zrc20.go new file mode 100644 index 0000000000..560b0c04b3 --- /dev/null +++ b/x/fungible/types/message_unpause_zrc20.go @@ -0,0 +1,59 @@ +package types + +import ( + cosmoserrors "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + ethcommon "github.com/ethereum/go-ethereum/common" +) + +const TypeMsgUnpauseZRC20 = "unpause_zrc20" + +var _ sdk.Msg = &MsgUnpauseZRC20{} + +func NewMsgUnpauseZRC20(creator string, zrc20 []string) *MsgUnpauseZRC20 { + return &MsgUnpauseZRC20{ + Creator: creator, + Zrc20Addresses: zrc20, + } +} + +func (msg *MsgUnpauseZRC20) Route() string { + return RouterKey +} + +func (msg *MsgUnpauseZRC20) Type() string { + return TypeMsgUnpauseZRC20 +} + +func (msg *MsgUnpauseZRC20) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgUnpauseZRC20) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgUnpauseZRC20) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return cosmoserrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + + if len(msg.Zrc20Addresses) == 0 { + return cosmoserrors.Wrap(sdkerrors.ErrInvalidRequest, "no zrc20 to update") + } + + // check if all zrc20 addresses are valid + for _, zrc20 := range msg.Zrc20Addresses { + if !ethcommon.IsHexAddress(zrc20) { + return cosmoserrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid zrc20 contract address (%s)", zrc20) + } + } + return nil +} diff --git a/x/fungible/types/message_unpause_zrc20_test.go b/x/fungible/types/message_unpause_zrc20_test.go new file mode 100644 index 0000000000..3a959ab459 --- /dev/null +++ b/x/fungible/types/message_unpause_zrc20_test.go @@ -0,0 +1,147 @@ +package types_test + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/zeta-chain/zetacore/testutil/sample" + "github.com/zeta-chain/zetacore/x/fungible/types" +) + +func TestMsgUnpauseZRC20_ValidateBasic(t *testing.T) { + tt := []struct { + name string + msg *types.MsgUnpauseZRC20 + wantErr bool + }{ + { + name: "valid unpause message", + msg: types.NewMsgUnpauseZRC20( + sample.AccAddress(), + []string{ + sample.EthAddress().String(), + sample.EthAddress().String(), + sample.EthAddress().String(), + }, + ), + wantErr: false, + }, + { + name: "valid unpause message", + msg: types.NewMsgUnpauseZRC20( + sample.AccAddress(), + []string{ + sample.EthAddress().String(), + sample.EthAddress().String(), + sample.EthAddress().String(), + }, + ), + wantErr: false, + }, + { + name: "invalid creator address", + msg: types.NewMsgUnpauseZRC20( + "invalid", + []string{ + sample.EthAddress().String(), + sample.EthAddress().String(), + sample.EthAddress().String(), + }, + ), + wantErr: true, + }, + { + name: "invalid empty zrc20 address", + msg: types.NewMsgUnpauseZRC20( + sample.AccAddress(), + []string{}, + ), + wantErr: true, + }, + { + name: "invalid zrc20 address", + msg: types.NewMsgUnpauseZRC20( + sample.AccAddress(), + []string{ + sample.EthAddress().String(), + "invalid", + sample.EthAddress().String(), + }, + ), + wantErr: true, + }, + } + for _, tc := range tt { + tc := tc + t.Run(tc.name, func(t *testing.T) { + err := tc.msg.ValidateBasic() + if tc.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} + +func TestMsgUnpauseZRC20_GetSigners(t *testing.T) { + signer := sample.AccAddress() + tests := []struct { + name string + msg types.MsgUnpauseZRC20 + panics bool + }{ + { + name: "valid signer", + msg: types.MsgUnpauseZRC20{ + Creator: signer, + }, + panics: false, + }, + { + name: "invalid signer", + msg: types.MsgUnpauseZRC20{ + Creator: "invalid", + }, + panics: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if !tt.panics { + signers := tt.msg.GetSigners() + require.Equal(t, []sdk.AccAddress{sdk.MustAccAddressFromBech32(signer)}, signers) + } else { + require.Panics(t, func() { + tt.msg.GetSigners() + }) + } + }) + } +} + +func TestMsgUnpauseZRC20_Type(t *testing.T) { + msg := types.MsgUnpauseZRC20{ + Creator: sample.AccAddress(), + } + require.Equal(t, types.TypeMsgUnpauseZRC20, msg.Type()) +} + +func TestMsgUnpauseZRC20_Route(t *testing.T) { + msg := types.MsgUnpauseZRC20{ + Creator: sample.AccAddress(), + } + require.Equal(t, types.RouterKey, msg.Route()) +} + +func TestMsgUnpauseZRC20_GetSignBytes(t *testing.T) { + msg := types.MsgUnpauseZRC20{ + Creator: sample.AccAddress(), + } + require.NotPanics(t, func() { + msg.GetSignBytes() + }) +} diff --git a/x/fungible/types/tx.pb.go b/x/fungible/types/tx.pb.go index be4e46fbd0..f72a00bc24 100644 --- a/x/fungible/types/tx.pb.go +++ b/x/fungible/types/tx.pb.go @@ -30,31 +30,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type UpdatePausedStatusAction int32 - -const ( - UpdatePausedStatusAction_PAUSE UpdatePausedStatusAction = 0 - UpdatePausedStatusAction_UNPAUSE UpdatePausedStatusAction = 1 -) - -var UpdatePausedStatusAction_name = map[int32]string{ - 0: "PAUSE", - 1: "UNPAUSE", -} - -var UpdatePausedStatusAction_value = map[string]int32{ - "PAUSE": 0, - "UNPAUSE": 1, -} - -func (x UpdatePausedStatusAction) String() string { - return proto.EnumName(UpdatePausedStatusAction_name, int32(x)) -} - -func (UpdatePausedStatusAction) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_7bea9688d1d01113, []int{0} -} - type MsgDeploySystemContracts struct { Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` } @@ -681,24 +656,24 @@ func (m *MsgUpdateContractBytecodeResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateContractBytecodeResponse proto.InternalMessageInfo -type MsgUpdateZRC20PausedStatus struct { - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - Zrc20Addresses []string `protobuf:"bytes,2,rep,name=zrc20_addresses,json=zrc20Addresses,proto3" json:"zrc20_addresses,omitempty"` - Action UpdatePausedStatusAction `protobuf:"varint,3,opt,name=action,proto3,enum=zetachain.zetacore.fungible.UpdatePausedStatusAction" json:"action,omitempty"` +type MsgUpdateZRC20LiquidityCap struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + Zrc20Address string `protobuf:"bytes,2,opt,name=zrc20_address,json=zrc20Address,proto3" json:"zrc20_address,omitempty"` + LiquidityCap github_com_cosmos_cosmos_sdk_types.Uint `protobuf:"bytes,3,opt,name=liquidity_cap,json=liquidityCap,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Uint" json:"liquidity_cap"` } -func (m *MsgUpdateZRC20PausedStatus) Reset() { *m = MsgUpdateZRC20PausedStatus{} } -func (m *MsgUpdateZRC20PausedStatus) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateZRC20PausedStatus) ProtoMessage() {} -func (*MsgUpdateZRC20PausedStatus) Descriptor() ([]byte, []int) { +func (m *MsgUpdateZRC20LiquidityCap) Reset() { *m = MsgUpdateZRC20LiquidityCap{} } +func (m *MsgUpdateZRC20LiquidityCap) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateZRC20LiquidityCap) ProtoMessage() {} +func (*MsgUpdateZRC20LiquidityCap) Descriptor() ([]byte, []int) { return fileDescriptor_7bea9688d1d01113, []int{12} } -func (m *MsgUpdateZRC20PausedStatus) XXX_Unmarshal(b []byte) error { +func (m *MsgUpdateZRC20LiquidityCap) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateZRC20PausedStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUpdateZRC20LiquidityCap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateZRC20PausedStatus.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUpdateZRC20LiquidityCap.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -708,54 +683,135 @@ func (m *MsgUpdateZRC20PausedStatus) XXX_Marshal(b []byte, deterministic bool) ( return b[:n], nil } } -func (m *MsgUpdateZRC20PausedStatus) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateZRC20PausedStatus.Merge(m, src) +func (m *MsgUpdateZRC20LiquidityCap) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateZRC20LiquidityCap.Merge(m, src) } -func (m *MsgUpdateZRC20PausedStatus) XXX_Size() int { +func (m *MsgUpdateZRC20LiquidityCap) XXX_Size() int { return m.Size() } -func (m *MsgUpdateZRC20PausedStatus) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateZRC20PausedStatus.DiscardUnknown(m) +func (m *MsgUpdateZRC20LiquidityCap) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateZRC20LiquidityCap.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateZRC20PausedStatus proto.InternalMessageInfo +var xxx_messageInfo_MsgUpdateZRC20LiquidityCap proto.InternalMessageInfo -func (m *MsgUpdateZRC20PausedStatus) GetCreator() string { +func (m *MsgUpdateZRC20LiquidityCap) GetCreator() string { if m != nil { return m.Creator } return "" } -func (m *MsgUpdateZRC20PausedStatus) GetZrc20Addresses() []string { +func (m *MsgUpdateZRC20LiquidityCap) GetZrc20Address() string { if m != nil { - return m.Zrc20Addresses + return m.Zrc20Address } - return nil + return "" +} + +type MsgUpdateZRC20LiquidityCapResponse struct { +} + +func (m *MsgUpdateZRC20LiquidityCapResponse) Reset() { *m = MsgUpdateZRC20LiquidityCapResponse{} } +func (m *MsgUpdateZRC20LiquidityCapResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateZRC20LiquidityCapResponse) ProtoMessage() {} +func (*MsgUpdateZRC20LiquidityCapResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_7bea9688d1d01113, []int{13} +} +func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateZRC20LiquidityCapResponse.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 *MsgUpdateZRC20LiquidityCapResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateZRC20LiquidityCapResponse.Merge(m, src) +} +func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateZRC20LiquidityCapResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateZRC20LiquidityCapResponse proto.InternalMessageInfo + +type MsgPauseZRC20 struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + Zrc20Addresses []string `protobuf:"bytes,2,rep,name=zrc20_addresses,json=zrc20Addresses,proto3" json:"zrc20_addresses,omitempty"` +} + +func (m *MsgPauseZRC20) Reset() { *m = MsgPauseZRC20{} } +func (m *MsgPauseZRC20) String() string { return proto.CompactTextString(m) } +func (*MsgPauseZRC20) ProtoMessage() {} +func (*MsgPauseZRC20) Descriptor() ([]byte, []int) { + return fileDescriptor_7bea9688d1d01113, []int{14} +} +func (m *MsgPauseZRC20) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgPauseZRC20) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgPauseZRC20.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 *MsgPauseZRC20) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgPauseZRC20.Merge(m, src) +} +func (m *MsgPauseZRC20) XXX_Size() int { + return m.Size() +} +func (m *MsgPauseZRC20) XXX_DiscardUnknown() { + xxx_messageInfo_MsgPauseZRC20.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgPauseZRC20 proto.InternalMessageInfo + +func (m *MsgPauseZRC20) GetCreator() string { + if m != nil { + return m.Creator + } + return "" } -func (m *MsgUpdateZRC20PausedStatus) GetAction() UpdatePausedStatusAction { +func (m *MsgPauseZRC20) GetZrc20Addresses() []string { if m != nil { - return m.Action + return m.Zrc20Addresses } - return UpdatePausedStatusAction_PAUSE + return nil } -type MsgUpdateZRC20PausedStatusResponse struct { +type MsgPauseZRC20Response struct { } -func (m *MsgUpdateZRC20PausedStatusResponse) Reset() { *m = MsgUpdateZRC20PausedStatusResponse{} } -func (m *MsgUpdateZRC20PausedStatusResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateZRC20PausedStatusResponse) ProtoMessage() {} -func (*MsgUpdateZRC20PausedStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_7bea9688d1d01113, []int{13} +func (m *MsgPauseZRC20Response) Reset() { *m = MsgPauseZRC20Response{} } +func (m *MsgPauseZRC20Response) String() string { return proto.CompactTextString(m) } +func (*MsgPauseZRC20Response) ProtoMessage() {} +func (*MsgPauseZRC20Response) Descriptor() ([]byte, []int) { + return fileDescriptor_7bea9688d1d01113, []int{15} } -func (m *MsgUpdateZRC20PausedStatusResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgPauseZRC20Response) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateZRC20PausedStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgPauseZRC20Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateZRC20PausedStatusResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgPauseZRC20Response.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -765,36 +821,35 @@ func (m *MsgUpdateZRC20PausedStatusResponse) XXX_Marshal(b []byte, deterministic return b[:n], nil } } -func (m *MsgUpdateZRC20PausedStatusResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateZRC20PausedStatusResponse.Merge(m, src) +func (m *MsgPauseZRC20Response) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgPauseZRC20Response.Merge(m, src) } -func (m *MsgUpdateZRC20PausedStatusResponse) XXX_Size() int { +func (m *MsgPauseZRC20Response) XXX_Size() int { return m.Size() } -func (m *MsgUpdateZRC20PausedStatusResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateZRC20PausedStatusResponse.DiscardUnknown(m) +func (m *MsgPauseZRC20Response) XXX_DiscardUnknown() { + xxx_messageInfo_MsgPauseZRC20Response.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateZRC20PausedStatusResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgPauseZRC20Response proto.InternalMessageInfo -type MsgUpdateZRC20LiquidityCap struct { - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - Zrc20Address string `protobuf:"bytes,2,opt,name=zrc20_address,json=zrc20Address,proto3" json:"zrc20_address,omitempty"` - LiquidityCap github_com_cosmos_cosmos_sdk_types.Uint `protobuf:"bytes,3,opt,name=liquidity_cap,json=liquidityCap,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Uint" json:"liquidity_cap"` +type MsgUnpauseZRC20 struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + Zrc20Addresses []string `protobuf:"bytes,2,rep,name=zrc20_addresses,json=zrc20Addresses,proto3" json:"zrc20_addresses,omitempty"` } -func (m *MsgUpdateZRC20LiquidityCap) Reset() { *m = MsgUpdateZRC20LiquidityCap{} } -func (m *MsgUpdateZRC20LiquidityCap) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateZRC20LiquidityCap) ProtoMessage() {} -func (*MsgUpdateZRC20LiquidityCap) Descriptor() ([]byte, []int) { - return fileDescriptor_7bea9688d1d01113, []int{14} +func (m *MsgUnpauseZRC20) Reset() { *m = MsgUnpauseZRC20{} } +func (m *MsgUnpauseZRC20) String() string { return proto.CompactTextString(m) } +func (*MsgUnpauseZRC20) ProtoMessage() {} +func (*MsgUnpauseZRC20) Descriptor() ([]byte, []int) { + return fileDescriptor_7bea9688d1d01113, []int{16} } -func (m *MsgUpdateZRC20LiquidityCap) XXX_Unmarshal(b []byte) error { +func (m *MsgUnpauseZRC20) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateZRC20LiquidityCap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUnpauseZRC20) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateZRC20LiquidityCap.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUnpauseZRC20.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -804,47 +859,47 @@ func (m *MsgUpdateZRC20LiquidityCap) XXX_Marshal(b []byte, deterministic bool) ( return b[:n], nil } } -func (m *MsgUpdateZRC20LiquidityCap) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateZRC20LiquidityCap.Merge(m, src) +func (m *MsgUnpauseZRC20) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnpauseZRC20.Merge(m, src) } -func (m *MsgUpdateZRC20LiquidityCap) XXX_Size() int { +func (m *MsgUnpauseZRC20) XXX_Size() int { return m.Size() } -func (m *MsgUpdateZRC20LiquidityCap) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateZRC20LiquidityCap.DiscardUnknown(m) +func (m *MsgUnpauseZRC20) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnpauseZRC20.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateZRC20LiquidityCap proto.InternalMessageInfo +var xxx_messageInfo_MsgUnpauseZRC20 proto.InternalMessageInfo -func (m *MsgUpdateZRC20LiquidityCap) GetCreator() string { +func (m *MsgUnpauseZRC20) GetCreator() string { if m != nil { return m.Creator } return "" } -func (m *MsgUpdateZRC20LiquidityCap) GetZrc20Address() string { +func (m *MsgUnpauseZRC20) GetZrc20Addresses() []string { if m != nil { - return m.Zrc20Address + return m.Zrc20Addresses } - return "" + return nil } -type MsgUpdateZRC20LiquidityCapResponse struct { +type MsgUnpauseZRC20Response struct { } -func (m *MsgUpdateZRC20LiquidityCapResponse) Reset() { *m = MsgUpdateZRC20LiquidityCapResponse{} } -func (m *MsgUpdateZRC20LiquidityCapResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateZRC20LiquidityCapResponse) ProtoMessage() {} -func (*MsgUpdateZRC20LiquidityCapResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_7bea9688d1d01113, []int{15} +func (m *MsgUnpauseZRC20Response) Reset() { *m = MsgUnpauseZRC20Response{} } +func (m *MsgUnpauseZRC20Response) String() string { return proto.CompactTextString(m) } +func (*MsgUnpauseZRC20Response) ProtoMessage() {} +func (*MsgUnpauseZRC20Response) Descriptor() ([]byte, []int) { + return fileDescriptor_7bea9688d1d01113, []int{17} } -func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgUnpauseZRC20Response) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUnpauseZRC20Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateZRC20LiquidityCapResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUnpauseZRC20Response.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -854,20 +909,19 @@ func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_Marshal(b []byte, deterministic return b[:n], nil } } -func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateZRC20LiquidityCapResponse.Merge(m, src) +func (m *MsgUnpauseZRC20Response) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnpauseZRC20Response.Merge(m, src) } -func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_Size() int { +func (m *MsgUnpauseZRC20Response) XXX_Size() int { return m.Size() } -func (m *MsgUpdateZRC20LiquidityCapResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateZRC20LiquidityCapResponse.DiscardUnknown(m) +func (m *MsgUnpauseZRC20Response) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnpauseZRC20Response.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateZRC20LiquidityCapResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgUnpauseZRC20Response proto.InternalMessageInfo func init() { - proto.RegisterEnum("zetachain.zetacore.fungible.UpdatePausedStatusAction", UpdatePausedStatusAction_name, UpdatePausedStatusAction_value) proto.RegisterType((*MsgDeploySystemContracts)(nil), "zetachain.zetacore.fungible.MsgDeploySystemContracts") proto.RegisterType((*MsgDeploySystemContractsResponse)(nil), "zetachain.zetacore.fungible.MsgDeploySystemContractsResponse") proto.RegisterType((*MsgUpdateZRC20WithdrawFee)(nil), "zetachain.zetacore.fungible.MsgUpdateZRC20WithdrawFee") @@ -880,10 +934,12 @@ func init() { proto.RegisterType((*MsgRemoveForeignCoinResponse)(nil), "zetachain.zetacore.fungible.MsgRemoveForeignCoinResponse") proto.RegisterType((*MsgUpdateContractBytecode)(nil), "zetachain.zetacore.fungible.MsgUpdateContractBytecode") proto.RegisterType((*MsgUpdateContractBytecodeResponse)(nil), "zetachain.zetacore.fungible.MsgUpdateContractBytecodeResponse") - proto.RegisterType((*MsgUpdateZRC20PausedStatus)(nil), "zetachain.zetacore.fungible.MsgUpdateZRC20PausedStatus") - proto.RegisterType((*MsgUpdateZRC20PausedStatusResponse)(nil), "zetachain.zetacore.fungible.MsgUpdateZRC20PausedStatusResponse") proto.RegisterType((*MsgUpdateZRC20LiquidityCap)(nil), "zetachain.zetacore.fungible.MsgUpdateZRC20LiquidityCap") proto.RegisterType((*MsgUpdateZRC20LiquidityCapResponse)(nil), "zetachain.zetacore.fungible.MsgUpdateZRC20LiquidityCapResponse") + proto.RegisterType((*MsgPauseZRC20)(nil), "zetachain.zetacore.fungible.MsgPauseZRC20") + proto.RegisterType((*MsgPauseZRC20Response)(nil), "zetachain.zetacore.fungible.MsgPauseZRC20Response") + proto.RegisterType((*MsgUnpauseZRC20)(nil), "zetachain.zetacore.fungible.MsgUnpauseZRC20") + proto.RegisterType((*MsgUnpauseZRC20Response)(nil), "zetachain.zetacore.fungible.MsgUnpauseZRC20Response") } func init() { @@ -891,71 +947,70 @@ func init() { } var fileDescriptor_7bea9688d1d01113 = []byte{ - // 1013 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0xdd, 0x6e, 0x1b, 0x45, - 0x14, 0xce, 0x26, 0xcd, 0x8f, 0x4f, 0x6b, 0xc7, 0x8c, 0x4c, 0xbb, 0x38, 0xc8, 0x69, 0xb7, 0xa1, - 0x0d, 0x95, 0x6a, 0x17, 0x53, 0xa8, 0x90, 0x68, 0x51, 0xe2, 0x26, 0x50, 0xa9, 0x46, 0xd5, 0xa6, - 0x29, 0x22, 0x37, 0xab, 0xc9, 0xee, 0x64, 0xbd, 0x8a, 0x3d, 0xb3, 0xec, 0x8c, 0x71, 0xdd, 0x3b, - 0x24, 0xae, 0x2a, 0x81, 0x2a, 0xf1, 0x00, 0xbc, 0x01, 0x12, 0x6f, 0xd1, 0xcb, 0x5e, 0x22, 0x84, - 0x2a, 0x94, 0xbc, 0x08, 0x9a, 0xd9, 0x9f, 0xae, 0x7f, 0xd6, 0x89, 0xcd, 0x4d, 0xb2, 0x33, 0x39, - 0xdf, 0x97, 0xef, 0x9c, 0x39, 0xe7, 0x9b, 0x5d, 0xd8, 0x78, 0x41, 0x04, 0xb6, 0x5b, 0xd8, 0xa3, - 0x35, 0xf5, 0xc4, 0x02, 0x52, 0x3b, 0xea, 0x52, 0xd7, 0x3b, 0x6c, 0x93, 0x9a, 0x78, 0x5e, 0xf5, - 0x03, 0x26, 0x18, 0x5a, 0x4b, 0xa2, 0xaa, 0x71, 0x54, 0x35, 0x8e, 0x2a, 0x97, 0x5c, 0xe6, 0x32, - 0x15, 0x57, 0x93, 0x4f, 0x21, 0xa4, 0x7c, 0x63, 0x0c, 0xb1, 0x7f, 0xec, 0xd6, 0x6c, 0xe6, 0x51, - 0xf5, 0x23, 0x8c, 0x33, 0xee, 0x82, 0xde, 0xe4, 0xee, 0x43, 0xe2, 0xb7, 0x59, 0x7f, 0xaf, 0xcf, - 0x05, 0xe9, 0x34, 0x18, 0x15, 0x01, 0xb6, 0x05, 0x47, 0x3a, 0x2c, 0xdb, 0x01, 0xc1, 0x82, 0x05, - 0xba, 0x76, 0x55, 0xdb, 0xcc, 0x99, 0xf1, 0xd2, 0xf8, 0x47, 0x83, 0xab, 0x59, 0x30, 0x93, 0x70, - 0x9f, 0x51, 0x4e, 0xd0, 0x2d, 0x28, 0x76, 0xa9, 0xc7, 0x7b, 0xd8, 0x7f, 0x56, 0xdf, 0xc5, 0xb6, - 0x60, 0x41, 0x3f, 0xe2, 0x19, 0xd9, 0x47, 0x25, 0x58, 0xec, 0x49, 0x9d, 0xfa, 0xbc, 0x0a, 0x08, - 0x17, 0x68, 0x13, 0x56, 0x93, 0x48, 0x93, 0x75, 0x05, 0x09, 0xf4, 0x05, 0xf5, 0xf7, 0xe1, 0x6d, - 0xb4, 0x01, 0x79, 0x9b, 0x51, 0x4a, 0x24, 0xdb, 0xc1, 0xce, 0xb3, 0xa6, 0x7e, 0x41, 0xc5, 0x0d, - 0x6e, 0xa2, 0x1b, 0x50, 0xe0, 0x03, 0x62, 0xf5, 0x45, 0x15, 0x36, 0xb4, 0x6b, 0xbc, 0x9c, 0x87, - 0x0f, 0x9a, 0xdc, 0xdd, 0xf7, 0x1d, 0x2c, 0xc8, 0x81, 0xd9, 0xa8, 0xdf, 0xf9, 0xce, 0x13, 0x2d, - 0x27, 0xc0, 0xbd, 0x5d, 0x42, 0xb2, 0xcb, 0x82, 0xae, 0x43, 0xfe, 0x45, 0x60, 0xd7, 0xef, 0x58, - 0xd8, 0x71, 0x02, 0xc2, 0x79, 0x94, 0xcd, 0x25, 0xb5, 0xb9, 0x15, 0xee, 0xa1, 0xef, 0xa1, 0x48, - 0x49, 0xcf, 0xea, 0x45, 0x8c, 0xd6, 0x11, 0x21, 0xfa, 0x92, 0x8c, 0xdb, 0xae, 0xbd, 0x7e, 0xbb, - 0x3e, 0xf7, 0xf7, 0xdb, 0xf5, 0x9b, 0xae, 0x27, 0x5a, 0xdd, 0xc3, 0xaa, 0xcd, 0x3a, 0x35, 0x9b, - 0xf1, 0x0e, 0xe3, 0xd1, 0xaf, 0xdb, 0xdc, 0x39, 0xae, 0x89, 0xbe, 0x4f, 0x78, 0x75, 0xdf, 0xa3, - 0xc2, 0x2c, 0x50, 0xd2, 0x4b, 0x2b, 0xdb, 0x83, 0xbc, 0xa4, 0x76, 0x31, 0xb7, 0xda, 0x5e, 0xc7, - 0x13, 0xfa, 0xf2, 0x6c, 0xbc, 0x17, 0x29, 0xe9, 0x7d, 0x8d, 0xf9, 0x63, 0xc9, 0x61, 0x5c, 0x87, - 0x6b, 0x99, 0xb5, 0x88, 0xcf, 0xda, 0x08, 0xe0, 0x4a, 0x12, 0x34, 0xd8, 0x0f, 0x13, 0xca, 0x75, - 0x1f, 0xd6, 0xa4, 0xdc, 0xb0, 0xf8, 0x96, 0x1d, 0x01, 0x86, 0x8a, 0xa7, 0x53, 0xd2, 0x1b, 0x64, - 0x8c, 0x0a, 0x69, 0x5c, 0x83, 0xf5, 0x8c, 0xff, 0x99, 0xc8, 0xfa, 0x7d, 0x1e, 0xca, 0x49, 0x9f, - 0xee, 0x46, 0x13, 0xd3, 0x60, 0x1e, 0x55, 0x89, 0x4c, 0x90, 0x56, 0x82, 0xc5, 0x1d, 0x19, 0x12, - 0xf7, 0xa3, 0x5a, 0xa0, 0x4d, 0x28, 0x1e, 0xb1, 0x80, 0x78, 0x2e, 0xb5, 0xd4, 0x68, 0x59, 0x9e, - 0xa3, 0x1a, 0x72, 0xc1, 0x2c, 0x44, 0xfb, 0x0d, 0xb9, 0xfd, 0xc8, 0x41, 0x65, 0x58, 0x71, 0x88, - 0xed, 0x75, 0x70, 0x9b, 0xab, 0x56, 0xcc, 0x9b, 0xc9, 0x1a, 0x21, 0xb8, 0x40, 0x71, 0x87, 0x44, - 0xbd, 0xa7, 0x9e, 0xd1, 0x65, 0x58, 0xe2, 0xfd, 0xce, 0x21, 0x6b, 0x87, 0xad, 0x60, 0x46, 0x2b, - 0xb4, 0x0d, 0x39, 0x39, 0xac, 0x96, 0x3c, 0x1c, 0x75, 0x9a, 0x85, 0xfa, 0x47, 0xd5, 0x31, 0x6e, - 0xe0, 0x1f, 0xbb, 0x55, 0x35, 0xd5, 0x32, 0xb9, 0xa7, 0x7d, 0x9f, 0x98, 0x2b, 0x76, 0xf4, 0x84, - 0xd6, 0x20, 0xf7, 0xae, 0x23, 0x56, 0x94, 0xdc, 0x15, 0x37, 0x3e, 0xdd, 0x07, 0x60, 0x64, 0x17, - 0x28, 0x19, 0x65, 0x1d, 0x96, 0xe3, 0x53, 0x89, 0x0a, 0x15, 0x2d, 0x8d, 0x87, 0x50, 0x6a, 0x72, - 0xd7, 0x24, 0x1d, 0xf6, 0x23, 0xd9, 0x8d, 0x6a, 0xc0, 0x3c, 0x3a, 0xa1, 0xb4, 0x71, 0xfa, 0xf3, - 0xef, 0xd2, 0x37, 0x2a, 0xf0, 0xe1, 0x38, 0x96, 0xe4, 0x1c, 0x7f, 0xd6, 0x52, 0x03, 0x19, 0x9f, - 0xf2, 0x76, 0x5f, 0x10, 0x9b, 0x39, 0x93, 0x06, 0xf2, 0x63, 0x28, 0x66, 0xb4, 0xd5, 0xaa, 0x3d, - 0xd8, 0x4d, 0xc8, 0x08, 0x67, 0x47, 0x12, 0x5a, 0x2d, 0xcc, 0x5b, 0x91, 0xd3, 0xc8, 0x51, 0x68, - 0x30, 0x87, 0x7c, 0x83, 0x79, 0x6b, 0x60, 0x14, 0x86, 0x55, 0x24, 0x5a, 0xff, 0xd0, 0x54, 0xcf, - 0xa5, 0x06, 0xe6, 0x09, 0xee, 0x72, 0xe2, 0xec, 0x09, 0x2c, 0xba, 0x13, 0x4c, 0x15, 0xdd, 0x84, - 0xd5, 0x01, 0xf7, 0x20, 0x52, 0xeb, 0x82, 0xb4, 0xa7, 0xb4, 0x7f, 0x10, 0x8e, 0x9a, 0xb0, 0x84, - 0x6d, 0xe1, 0x31, 0xaa, 0x34, 0x16, 0xea, 0x9f, 0x55, 0x27, 0xdc, 0x0f, 0xd5, 0x50, 0x48, 0x5a, - 0xc3, 0x96, 0x02, 0x9b, 0x11, 0x89, 0xb1, 0xa1, 0x5a, 0x20, 0x43, 0x6f, 0x92, 0xd6, 0x9f, 0x23, - 0x69, 0x3d, 0xf6, 0x7e, 0xe8, 0x7a, 0x8e, 0x27, 0xfa, 0x0d, 0xec, 0xff, 0x5f, 0x53, 0x7c, 0x0a, - 0xf9, 0x76, 0x4c, 0x67, 0xd9, 0xd8, 0x0f, 0xab, 0x3f, 0xbd, 0x73, 0x5d, 0x6a, 0xa7, 0x44, 0x8d, - 0x66, 0x96, 0x96, 0x1c, 0x67, 0x76, 0xab, 0x0e, 0x7a, 0x56, 0x8d, 0x50, 0x0e, 0x16, 0x9f, 0x6c, - 0xed, 0xef, 0xed, 0x14, 0xe7, 0xd0, 0x45, 0x58, 0xde, 0xff, 0x36, 0x5c, 0x68, 0xf5, 0x5f, 0x73, - 0xb0, 0xd0, 0xe4, 0x2e, 0xfa, 0x45, 0x83, 0xf7, 0xc7, 0x5f, 0x9e, 0x93, 0x0f, 0x25, 0xeb, 0xf2, - 0x2c, 0xdf, 0x9f, 0x09, 0x96, 0x0c, 0xea, 0x6f, 0x1a, 0x5c, 0xc9, 0x72, 0xbb, 0x7b, 0xe7, 0xa3, - 0x1e, 0x01, 0x96, 0xbf, 0x9a, 0x11, 0x98, 0xa8, 0xfa, 0x49, 0x83, 0xf7, 0x46, 0x2d, 0xe2, 0x93, - 0xb3, 0x68, 0x47, 0x20, 0xe5, 0x2f, 0xa6, 0x86, 0x24, 0x1a, 0x5e, 0x6a, 0x50, 0x1a, 0x7b, 0x3f, - 0xdd, 0x3d, 0x8b, 0x73, 0x1c, 0xaa, 0xfc, 0xe5, 0x2c, 0xa8, 0x44, 0xcc, 0x2b, 0x0d, 0x2e, 0x67, - 0x98, 0xd9, 0xe7, 0xe7, 0x23, 0x1e, 0xc6, 0x95, 0x1f, 0xcc, 0x86, 0x1b, 0x23, 0x69, 0xe4, 0x85, - 0xe7, 0x9c, 0x92, 0x86, 0x71, 0xe7, 0x95, 0x94, 0xf5, 0x52, 0xa1, 0x9a, 0x39, 0xcb, 0x46, 0xef, - 0x4d, 0xc1, 0x9d, 0x06, 0x9e, 0xdd, 0xcc, 0x67, 0x18, 0xe1, 0xb0, 0xaa, 0x01, 0x17, 0x9c, 0x46, - 0x55, 0x1a, 0x38, 0x95, 0xaa, 0x71, 0x26, 0xb6, 0xfd, 0xe8, 0xf5, 0x49, 0x45, 0x7b, 0x73, 0x52, - 0xd1, 0xfe, 0x3d, 0xa9, 0x68, 0xaf, 0x4e, 0x2b, 0x73, 0x6f, 0x4e, 0x2b, 0x73, 0x7f, 0x9d, 0x56, - 0xe6, 0x0e, 0x6a, 0x29, 0xef, 0x94, 0xd4, 0xb7, 0x87, 0xbe, 0x0a, 0x9e, 0xa7, 0x3e, 0x38, 0xa4, - 0x91, 0x1e, 0x2e, 0xa9, 0x2f, 0x83, 0x4f, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x1c, 0x83, - 0x64, 0x9c, 0x0c, 0x00, 0x00, + // 998 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdd, 0x6e, 0xdb, 0x46, + 0x13, 0x35, 0xed, 0xf8, 0x6f, 0x3e, 0xcb, 0xf6, 0xb7, 0x50, 0x62, 0x86, 0x2e, 0xe4, 0x84, 0x71, + 0x13, 0x37, 0x68, 0xc4, 0x54, 0x75, 0x1b, 0x14, 0x68, 0x52, 0xd4, 0x4a, 0xdc, 0x06, 0x88, 0x80, + 0x82, 0x71, 0x52, 0xd4, 0x37, 0xc4, 0x9a, 0x5c, 0x53, 0x84, 0xa5, 0x5d, 0x96, 0x4b, 0x55, 0x51, + 0xee, 0x0a, 0xf4, 0x2a, 0x40, 0x81, 0x00, 0x7d, 0x80, 0x3e, 0x43, 0xdf, 0x22, 0x97, 0xb9, 0x2c, + 0x82, 0x22, 0x28, 0xec, 0x17, 0x29, 0x76, 0xf9, 0x63, 0x52, 0x12, 0x25, 0x59, 0xed, 0x8d, 0xcd, + 0x1d, 0x9d, 0x39, 0x7b, 0x66, 0x76, 0x66, 0x96, 0x84, 0xed, 0x97, 0x24, 0xc4, 0x76, 0x13, 0x7b, + 0xd4, 0x90, 0x4f, 0x2c, 0x20, 0xc6, 0x71, 0x87, 0xba, 0xde, 0x51, 0x8b, 0x18, 0xe1, 0x8b, 0xaa, + 0x1f, 0xb0, 0x90, 0xa1, 0xcd, 0x14, 0x55, 0x4d, 0x50, 0xd5, 0x04, 0xa5, 0x95, 0x5d, 0xe6, 0x32, + 0x89, 0x33, 0xc4, 0x53, 0xe4, 0xa2, 0xdd, 0x1c, 0x42, 0xec, 0x9f, 0xb8, 0x86, 0xcd, 0x3c, 0x2a, + 0xff, 0x44, 0x38, 0x7d, 0x17, 0xd4, 0x06, 0x77, 0x1f, 0x12, 0xbf, 0xc5, 0x7a, 0x4f, 0x7b, 0x3c, + 0x24, 0xed, 0x3a, 0xa3, 0x61, 0x80, 0xed, 0x90, 0x23, 0x15, 0x16, 0xed, 0x80, 0xe0, 0x90, 0x05, + 0xaa, 0x72, 0x4d, 0xd9, 0x59, 0x36, 0x93, 0xa5, 0xfe, 0x97, 0x02, 0xd7, 0x8a, 0xdc, 0x4c, 0xc2, + 0x7d, 0x46, 0x39, 0x41, 0xb7, 0x61, 0xbd, 0x43, 0x3d, 0xde, 0xc5, 0xfe, 0xf3, 0xda, 0x3e, 0xb6, + 0x43, 0x16, 0xf4, 0x62, 0x9e, 0x01, 0x3b, 0x2a, 0xc3, 0x7c, 0x57, 0xe8, 0x54, 0x67, 0x25, 0x20, + 0x5a, 0xa0, 0x1d, 0x58, 0x4b, 0x91, 0x26, 0xeb, 0x84, 0x24, 0x50, 0xe7, 0xe4, 0xef, 0xfd, 0x66, + 0xb4, 0x0d, 0x25, 0x9b, 0x51, 0x4a, 0x04, 0xdb, 0xe1, 0xa3, 0xe7, 0x0d, 0xf5, 0x92, 0xc4, 0xe5, + 0x8d, 0xe8, 0x26, 0xac, 0xf2, 0x9c, 0x58, 0x75, 0x5e, 0xc2, 0xfa, 0xac, 0xfa, 0xab, 0x59, 0xb8, + 0xda, 0xe0, 0xee, 0x33, 0xdf, 0xc1, 0x21, 0x39, 0x34, 0xeb, 0xb5, 0xbb, 0xdf, 0x7b, 0x61, 0xd3, + 0x09, 0x70, 0x77, 0x9f, 0x90, 0xe2, 0xb4, 0xa0, 0x1b, 0x50, 0x7a, 0x19, 0xd8, 0xb5, 0xbb, 0x16, + 0x76, 0x9c, 0x80, 0x70, 0x1e, 0x47, 0xb3, 0x22, 0x8d, 0x5f, 0x47, 0x36, 0xf4, 0x03, 0xac, 0x53, + 0xd2, 0xb5, 0xba, 0x31, 0xa3, 0x75, 0x4c, 0x88, 0xba, 0x20, 0x70, 0x7b, 0xc6, 0x9b, 0xf7, 0x5b, + 0x33, 0xef, 0xde, 0x6f, 0xdd, 0x72, 0xbd, 0xb0, 0xd9, 0x39, 0xaa, 0xda, 0xac, 0x6d, 0xd8, 0x8c, + 0xb7, 0x19, 0x8f, 0xff, 0xdd, 0xe1, 0xce, 0x89, 0x11, 0xf6, 0x7c, 0xc2, 0xab, 0xcf, 0x3c, 0x1a, + 0x9a, 0xab, 0x94, 0x74, 0xb3, 0xca, 0x9e, 0x42, 0x49, 0x50, 0xbb, 0x98, 0x5b, 0x2d, 0xaf, 0xed, + 0x85, 0xea, 0xe2, 0x74, 0xbc, 0xff, 0xa3, 0xa4, 0xfb, 0x0d, 0xe6, 0x4f, 0x04, 0x87, 0x7e, 0x03, + 0xae, 0x17, 0xe6, 0x22, 0x39, 0x6b, 0x3d, 0x80, 0x8d, 0x14, 0x94, 0xaf, 0x87, 0x11, 0xe9, 0xba, + 0x0f, 0x9b, 0x42, 0x6e, 0x94, 0x7c, 0xcb, 0x8e, 0x1d, 0xfa, 0x92, 0xa7, 0x52, 0xd2, 0xcd, 0x33, + 0xc6, 0x89, 0xd4, 0xaf, 0xc3, 0x56, 0xc1, 0x9e, 0xa9, 0xac, 0xdf, 0x67, 0x41, 0x4b, 0xeb, 0x74, + 0x3f, 0xee, 0x98, 0x3a, 0xf3, 0xa8, 0x0c, 0x64, 0x84, 0xb4, 0x32, 0xcc, 0x3f, 0x12, 0x90, 0xa4, + 0x1e, 0xe5, 0x02, 0xed, 0xc0, 0xfa, 0x31, 0x0b, 0x88, 0xe7, 0x52, 0x4b, 0xb6, 0x96, 0xe5, 0x39, + 0xb2, 0x20, 0xe7, 0xcc, 0xd5, 0xd8, 0x5e, 0x17, 0xe6, 0xc7, 0x0e, 0xd2, 0x60, 0xc9, 0x21, 0xb6, + 0xd7, 0xc6, 0x2d, 0x2e, 0x4b, 0xb1, 0x64, 0xa6, 0x6b, 0x84, 0xe0, 0x12, 0xc5, 0x6d, 0x12, 0xd7, + 0x9e, 0x7c, 0x46, 0x57, 0x60, 0x81, 0xf7, 0xda, 0x47, 0xac, 0x15, 0x95, 0x82, 0x19, 0xaf, 0xd0, + 0x1e, 0x2c, 0x8b, 0x66, 0xb5, 0xc4, 0xe1, 0xc8, 0xd3, 0x5c, 0xad, 0x7d, 0x58, 0x1d, 0x32, 0x0d, + 0xfc, 0x13, 0xb7, 0x2a, 0xbb, 0x5a, 0x04, 0x77, 0xd0, 0xf3, 0x89, 0xb9, 0x64, 0xc7, 0x4f, 0x68, + 0x13, 0x96, 0xcf, 0x2b, 0x62, 0x49, 0xca, 0x5d, 0x72, 0x93, 0xd3, 0x7d, 0x00, 0x7a, 0x71, 0x82, + 0xd2, 0x56, 0x56, 0x61, 0x31, 0x39, 0x95, 0x38, 0x51, 0xf1, 0x52, 0x7f, 0x08, 0xe5, 0x06, 0x77, + 0x4d, 0xd2, 0x66, 0x3f, 0x91, 0xfd, 0x38, 0x07, 0xcc, 0xa3, 0x23, 0x52, 0x9b, 0x84, 0x3f, 0x7b, + 0x1e, 0xbe, 0x5e, 0x81, 0x0f, 0x86, 0xb1, 0xa4, 0xe7, 0xf8, 0x8b, 0x92, 0x69, 0xc8, 0xe4, 0x94, + 0xf7, 0x7a, 0x21, 0xb1, 0x99, 0x33, 0xaa, 0x21, 0x3f, 0x82, 0xf5, 0x82, 0xb2, 0x5a, 0xb3, 0xf3, + 0xd5, 0x84, 0xf4, 0xa8, 0x77, 0x04, 0xa1, 0xd5, 0xc4, 0xbc, 0x19, 0x4f, 0x1a, 0xd1, 0x0a, 0x75, + 0xe6, 0x90, 0x6f, 0x31, 0x6f, 0xe6, 0x5a, 0xa1, 0x5f, 0x45, 0xaa, 0xf5, 0x0f, 0x45, 0xd6, 0x5c, + 0xa6, 0x61, 0x9e, 0x78, 0x3f, 0x76, 0x3c, 0xc7, 0x0b, 0x7b, 0x75, 0xec, 0xff, 0xdb, 0xe9, 0x71, + 0x00, 0xa5, 0x56, 0x42, 0x67, 0xd9, 0xd8, 0x8f, 0x64, 0x5e, 0xbc, 0xc5, 0x57, 0x5a, 0x19, 0x51, + 0xfa, 0xb6, 0xac, 0x82, 0x02, 0xc9, 0x69, 0x64, 0x26, 0x94, 0x1a, 0xdc, 0xfd, 0x0e, 0x77, 0x38, + 0x19, 0xd7, 0x3f, 0xb7, 0x60, 0x2d, 0x17, 0x0b, 0x11, 0xd1, 0xcc, 0x89, 0x51, 0x9b, 0x8d, 0x86, + 0x70, 0x7d, 0x03, 0x2e, 0xe7, 0x38, 0xd3, 0xcd, 0x0e, 0x60, 0x4d, 0x48, 0xa2, 0xfe, 0x7f, 0xba, + 0xdd, 0xd5, 0x68, 0x4e, 0x65, 0x58, 0x93, 0x0d, 0x6b, 0xef, 0x96, 0x61, 0xae, 0xc1, 0x5d, 0xf4, + 0xab, 0x02, 0x97, 0x87, 0xdf, 0x87, 0x9f, 0x55, 0x47, 0xdc, 0xc3, 0xd5, 0xa2, 0xfb, 0x50, 0xbb, + 0x3f, 0x95, 0x5b, 0xda, 0x7b, 0xbf, 0x29, 0xb0, 0x51, 0x34, 0xc0, 0xee, 0x4d, 0x46, 0x3d, 0xe0, + 0xa8, 0x7d, 0x35, 0xa5, 0x63, 0xaa, 0xea, 0x67, 0x05, 0xfe, 0x3f, 0xd8, 0xf5, 0x9f, 0x8c, 0xa3, + 0x1d, 0x70, 0xd1, 0xbe, 0xb8, 0xb0, 0x4b, 0xaa, 0xe1, 0x95, 0x02, 0xe5, 0xa1, 0x57, 0xce, 0xee, + 0x38, 0xce, 0x61, 0x5e, 0xda, 0x97, 0xd3, 0x78, 0xa5, 0x62, 0x5e, 0x2b, 0x70, 0xa5, 0x60, 0x3e, + 0x7d, 0x3e, 0x19, 0x71, 0xbf, 0x9f, 0xf6, 0x60, 0x3a, 0xbf, 0x21, 0x92, 0x06, 0xde, 0x61, 0x26, + 0x94, 0xd4, 0xef, 0x37, 0xa9, 0xa4, 0xa2, 0xf7, 0x04, 0x59, 0xcc, 0x45, 0x93, 0xf1, 0xde, 0x05, + 0xb8, 0xb3, 0x8e, 0xe3, 0x8b, 0x79, 0xcc, 0x60, 0x43, 0x2d, 0x80, 0xcc, 0x54, 0xbb, 0x3d, 0x8e, + 0xee, 0x1c, 0xab, 0xd5, 0x26, 0xc7, 0xa6, 0xbb, 0x05, 0xb0, 0x92, 0x1b, 0x6b, 0x1f, 0x8f, 0x95, + 0x9f, 0x41, 0x6b, 0xbb, 0x17, 0x41, 0x27, 0x7b, 0xee, 0x3d, 0x7e, 0x73, 0x5a, 0x51, 0xde, 0x9e, + 0x56, 0x94, 0xbf, 0x4f, 0x2b, 0xca, 0xeb, 0xb3, 0xca, 0xcc, 0xdb, 0xb3, 0xca, 0xcc, 0x9f, 0x67, + 0x95, 0x99, 0x43, 0x23, 0x73, 0x63, 0x08, 0xbe, 0x3b, 0x7d, 0x1f, 0x0d, 0x2f, 0x32, 0xdf, 0x23, + 0xe2, 0xfa, 0x38, 0x5a, 0x90, 0x1f, 0x0e, 0x9f, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x6a, 0x35, + 0xf0, 0xc9, 0xbb, 0x0c, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -976,8 +1031,9 @@ type MsgClient interface { UpdateSystemContract(ctx context.Context, in *MsgUpdateSystemContract, opts ...grpc.CallOption) (*MsgUpdateSystemContractResponse, error) UpdateContractBytecode(ctx context.Context, in *MsgUpdateContractBytecode, opts ...grpc.CallOption) (*MsgUpdateContractBytecodeResponse, error) UpdateZRC20WithdrawFee(ctx context.Context, in *MsgUpdateZRC20WithdrawFee, opts ...grpc.CallOption) (*MsgUpdateZRC20WithdrawFeeResponse, error) - UpdateZRC20PausedStatus(ctx context.Context, in *MsgUpdateZRC20PausedStatus, opts ...grpc.CallOption) (*MsgUpdateZRC20PausedStatusResponse, error) UpdateZRC20LiquidityCap(ctx context.Context, in *MsgUpdateZRC20LiquidityCap, opts ...grpc.CallOption) (*MsgUpdateZRC20LiquidityCapResponse, error) + PauseZRC20(ctx context.Context, in *MsgPauseZRC20, opts ...grpc.CallOption) (*MsgPauseZRC20Response, error) + UnpauseZRC20(ctx context.Context, in *MsgUnpauseZRC20, opts ...grpc.CallOption) (*MsgUnpauseZRC20Response, error) } type msgClient struct { @@ -1042,18 +1098,27 @@ func (c *msgClient) UpdateZRC20WithdrawFee(ctx context.Context, in *MsgUpdateZRC return out, nil } -func (c *msgClient) UpdateZRC20PausedStatus(ctx context.Context, in *MsgUpdateZRC20PausedStatus, opts ...grpc.CallOption) (*MsgUpdateZRC20PausedStatusResponse, error) { - out := new(MsgUpdateZRC20PausedStatusResponse) - err := c.cc.Invoke(ctx, "/zetachain.zetacore.fungible.Msg/UpdateZRC20PausedStatus", in, out, opts...) +func (c *msgClient) UpdateZRC20LiquidityCap(ctx context.Context, in *MsgUpdateZRC20LiquidityCap, opts ...grpc.CallOption) (*MsgUpdateZRC20LiquidityCapResponse, error) { + out := new(MsgUpdateZRC20LiquidityCapResponse) + err := c.cc.Invoke(ctx, "/zetachain.zetacore.fungible.Msg/UpdateZRC20LiquidityCap", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *msgClient) UpdateZRC20LiquidityCap(ctx context.Context, in *MsgUpdateZRC20LiquidityCap, opts ...grpc.CallOption) (*MsgUpdateZRC20LiquidityCapResponse, error) { - out := new(MsgUpdateZRC20LiquidityCapResponse) - err := c.cc.Invoke(ctx, "/zetachain.zetacore.fungible.Msg/UpdateZRC20LiquidityCap", in, out, opts...) +func (c *msgClient) PauseZRC20(ctx context.Context, in *MsgPauseZRC20, opts ...grpc.CallOption) (*MsgPauseZRC20Response, error) { + out := new(MsgPauseZRC20Response) + err := c.cc.Invoke(ctx, "/zetachain.zetacore.fungible.Msg/PauseZRC20", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UnpauseZRC20(ctx context.Context, in *MsgUnpauseZRC20, opts ...grpc.CallOption) (*MsgUnpauseZRC20Response, error) { + out := new(MsgUnpauseZRC20Response) + err := c.cc.Invoke(ctx, "/zetachain.zetacore.fungible.Msg/UnpauseZRC20", in, out, opts...) if err != nil { return nil, err } @@ -1068,8 +1133,9 @@ type MsgServer interface { UpdateSystemContract(context.Context, *MsgUpdateSystemContract) (*MsgUpdateSystemContractResponse, error) UpdateContractBytecode(context.Context, *MsgUpdateContractBytecode) (*MsgUpdateContractBytecodeResponse, error) UpdateZRC20WithdrawFee(context.Context, *MsgUpdateZRC20WithdrawFee) (*MsgUpdateZRC20WithdrawFeeResponse, error) - UpdateZRC20PausedStatus(context.Context, *MsgUpdateZRC20PausedStatus) (*MsgUpdateZRC20PausedStatusResponse, error) UpdateZRC20LiquidityCap(context.Context, *MsgUpdateZRC20LiquidityCap) (*MsgUpdateZRC20LiquidityCapResponse, error) + PauseZRC20(context.Context, *MsgPauseZRC20) (*MsgPauseZRC20Response, error) + UnpauseZRC20(context.Context, *MsgUnpauseZRC20) (*MsgUnpauseZRC20Response, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -1094,12 +1160,15 @@ func (*UnimplementedMsgServer) UpdateContractBytecode(ctx context.Context, req * func (*UnimplementedMsgServer) UpdateZRC20WithdrawFee(ctx context.Context, req *MsgUpdateZRC20WithdrawFee) (*MsgUpdateZRC20WithdrawFeeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateZRC20WithdrawFee not implemented") } -func (*UnimplementedMsgServer) UpdateZRC20PausedStatus(ctx context.Context, req *MsgUpdateZRC20PausedStatus) (*MsgUpdateZRC20PausedStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateZRC20PausedStatus not implemented") -} func (*UnimplementedMsgServer) UpdateZRC20LiquidityCap(ctx context.Context, req *MsgUpdateZRC20LiquidityCap) (*MsgUpdateZRC20LiquidityCapResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateZRC20LiquidityCap not implemented") } +func (*UnimplementedMsgServer) PauseZRC20(ctx context.Context, req *MsgPauseZRC20) (*MsgPauseZRC20Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method PauseZRC20 not implemented") +} +func (*UnimplementedMsgServer) UnpauseZRC20(ctx context.Context, req *MsgUnpauseZRC20) (*MsgUnpauseZRC20Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnpauseZRC20 not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -1213,38 +1282,56 @@ func _Msg_UpdateZRC20WithdrawFee_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } -func _Msg_UpdateZRC20PausedStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateZRC20PausedStatus) +func _Msg_UpdateZRC20LiquidityCap_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateZRC20LiquidityCap) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).UpdateZRC20PausedStatus(ctx, in) + return srv.(MsgServer).UpdateZRC20LiquidityCap(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/zetachain.zetacore.fungible.Msg/UpdateZRC20PausedStatus", + FullMethod: "/zetachain.zetacore.fungible.Msg/UpdateZRC20LiquidityCap", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateZRC20PausedStatus(ctx, req.(*MsgUpdateZRC20PausedStatus)) + return srv.(MsgServer).UpdateZRC20LiquidityCap(ctx, req.(*MsgUpdateZRC20LiquidityCap)) } return interceptor(ctx, in, info, handler) } -func _Msg_UpdateZRC20LiquidityCap_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateZRC20LiquidityCap) +func _Msg_PauseZRC20_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgPauseZRC20) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).UpdateZRC20LiquidityCap(ctx, in) + return srv.(MsgServer).PauseZRC20(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/zetachain.zetacore.fungible.Msg/UpdateZRC20LiquidityCap", + FullMethod: "/zetachain.zetacore.fungible.Msg/PauseZRC20", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateZRC20LiquidityCap(ctx, req.(*MsgUpdateZRC20LiquidityCap)) + return srv.(MsgServer).PauseZRC20(ctx, req.(*MsgPauseZRC20)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UnpauseZRC20_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUnpauseZRC20) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UnpauseZRC20(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/zetachain.zetacore.fungible.Msg/UnpauseZRC20", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UnpauseZRC20(ctx, req.(*MsgUnpauseZRC20)) } return interceptor(ctx, in, info, handler) } @@ -1277,14 +1364,18 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "UpdateZRC20WithdrawFee", Handler: _Msg_UpdateZRC20WithdrawFee_Handler, }, - { - MethodName: "UpdateZRC20PausedStatus", - Handler: _Msg_UpdateZRC20PausedStatus_Handler, - }, { MethodName: "UpdateZRC20LiquidityCap", Handler: _Msg_UpdateZRC20LiquidityCap_Handler, }, + { + MethodName: "PauseZRC20", + Handler: _Msg_PauseZRC20_Handler, + }, + { + MethodName: "UnpauseZRC20", + Handler: _Msg_UnpauseZRC20_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "zetachain/zetacore/fungible/tx.proto", @@ -1746,7 +1837,7 @@ func (m *MsgUpdateContractBytecodeResponse) MarshalToSizedBuffer(dAtA []byte) (i return len(dAtA) - i, nil } -func (m *MsgUpdateZRC20PausedStatus) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateZRC20LiquidityCap) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1756,21 +1847,86 @@ func (m *MsgUpdateZRC20PausedStatus) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateZRC20PausedStatus) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateZRC20LiquidityCap) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateZRC20PausedStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateZRC20LiquidityCap) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Action != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.Action)) + { + size := m.LiquidityCap.Size() + i -= size + if _, err := m.LiquidityCap.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Zrc20Address) > 0 { + i -= len(m.Zrc20Address) + copy(dAtA[i:], m.Zrc20Address) + i = encodeVarintTx(dAtA, i, uint64(len(m.Zrc20Address))) i-- - dAtA[i] = 0x18 + 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 *MsgUpdateZRC20LiquidityCapResponse) 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 *MsgUpdateZRC20LiquidityCapResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateZRC20LiquidityCapResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgPauseZRC20) 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 *MsgPauseZRC20) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgPauseZRC20) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l if len(m.Zrc20Addresses) > 0 { for iNdEx := len(m.Zrc20Addresses) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.Zrc20Addresses[iNdEx]) @@ -1790,7 +1946,7 @@ func (m *MsgUpdateZRC20PausedStatus) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } -func (m *MsgUpdateZRC20PausedStatusResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgPauseZRC20Response) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1800,12 +1956,12 @@ func (m *MsgUpdateZRC20PausedStatusResponse) Marshal() (dAtA []byte, err error) return dAtA[:n], nil } -func (m *MsgUpdateZRC20PausedStatusResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgPauseZRC20Response) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateZRC20PausedStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgPauseZRC20Response) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1813,7 +1969,7 @@ func (m *MsgUpdateZRC20PausedStatusResponse) MarshalToSizedBuffer(dAtA []byte) ( return len(dAtA) - i, nil } -func (m *MsgUpdateZRC20LiquidityCap) Marshal() (dAtA []byte, err error) { +func (m *MsgUnpauseZRC20) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1823,32 +1979,24 @@ func (m *MsgUpdateZRC20LiquidityCap) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateZRC20LiquidityCap) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUnpauseZRC20) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateZRC20LiquidityCap) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUnpauseZRC20) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - { - size := m.LiquidityCap.Size() - i -= size - if _, err := m.LiquidityCap.MarshalTo(dAtA[i:]); err != nil { - return 0, err + if len(m.Zrc20Addresses) > 0 { + for iNdEx := len(m.Zrc20Addresses) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Zrc20Addresses[iNdEx]) + copy(dAtA[i:], m.Zrc20Addresses[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Zrc20Addresses[iNdEx]))) + i-- + dAtA[i] = 0x12 } - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if len(m.Zrc20Address) > 0 { - i -= len(m.Zrc20Address) - copy(dAtA[i:], m.Zrc20Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Zrc20Address))) - i-- - dAtA[i] = 0x12 } if len(m.Creator) > 0 { i -= len(m.Creator) @@ -1860,7 +2008,7 @@ func (m *MsgUpdateZRC20LiquidityCap) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } -func (m *MsgUpdateZRC20LiquidityCapResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgUnpauseZRC20Response) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1870,12 +2018,12 @@ func (m *MsgUpdateZRC20LiquidityCapResponse) Marshal() (dAtA []byte, err error) return dAtA[:n], nil } -func (m *MsgUpdateZRC20LiquidityCapResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUnpauseZRC20Response) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateZRC20LiquidityCapResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUnpauseZRC20Response) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -2098,7 +2246,35 @@ func (m *MsgUpdateContractBytecodeResponse) Size() (n int) { return n } -func (m *MsgUpdateZRC20PausedStatus) Size() (n int) { +func (m *MsgUpdateZRC20LiquidityCap) 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 = len(m.Zrc20Address) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.LiquidityCap.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateZRC20LiquidityCapResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgPauseZRC20) Size() (n int) { if m == nil { return 0 } @@ -2114,13 +2290,10 @@ func (m *MsgUpdateZRC20PausedStatus) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } } - if m.Action != 0 { - n += 1 + sovTx(uint64(m.Action)) - } return n } -func (m *MsgUpdateZRC20PausedStatusResponse) Size() (n int) { +func (m *MsgPauseZRC20Response) Size() (n int) { if m == nil { return 0 } @@ -2129,7 +2302,7 @@ func (m *MsgUpdateZRC20PausedStatusResponse) Size() (n int) { return n } -func (m *MsgUpdateZRC20LiquidityCap) Size() (n int) { +func (m *MsgUnpauseZRC20) Size() (n int) { if m == nil { return 0 } @@ -2139,16 +2312,16 @@ func (m *MsgUpdateZRC20LiquidityCap) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Zrc20Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Zrc20Addresses) > 0 { + for _, s := range m.Zrc20Addresses { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } } - l = m.LiquidityCap.Size() - n += 1 + l + sovTx(uint64(l)) return n } -func (m *MsgUpdateZRC20LiquidityCapResponse) Size() (n int) { +func (m *MsgUnpauseZRC20Response) Size() (n int) { if m == nil { return 0 } @@ -3547,7 +3720,7 @@ func (m *MsgUpdateContractBytecodeResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateZRC20PausedStatus) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateZRC20LiquidityCap) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3570,10 +3743,10 @@ func (m *MsgUpdateZRC20PausedStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateZRC20PausedStatus: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateZRC20LiquidityCap: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateZRC20PausedStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateZRC20LiquidityCap: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3610,7 +3783,7 @@ func (m *MsgUpdateZRC20PausedStatus) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Zrc20Addresses", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Zrc20Address", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3638,13 +3811,13 @@ func (m *MsgUpdateZRC20PausedStatus) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Zrc20Addresses = append(m.Zrc20Addresses, string(dAtA[iNdEx:postIndex])) + m.Zrc20Address = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LiquidityCap", wireType) } - m.Action = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3654,11 +3827,26 @@ func (m *MsgUpdateZRC20PausedStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Action |= UpdatePausedStatusAction(b&0x7F) << shift + 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 + } + if err := m.LiquidityCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3680,7 +3868,7 @@ func (m *MsgUpdateZRC20PausedStatus) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateZRC20PausedStatusResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateZRC20LiquidityCapResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3703,10 +3891,10 @@ func (m *MsgUpdateZRC20PausedStatusResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateZRC20PausedStatusResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateZRC20LiquidityCapResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateZRC20PausedStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateZRC20LiquidityCapResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -3730,7 +3918,7 @@ func (m *MsgUpdateZRC20PausedStatusResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateZRC20LiquidityCap) Unmarshal(dAtA []byte) error { +func (m *MsgPauseZRC20) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3753,10 +3941,10 @@ func (m *MsgUpdateZRC20LiquidityCap) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateZRC20LiquidityCap: wiretype end group for non-group") + return fmt.Errorf("proto: MsgPauseZRC20: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateZRC20LiquidityCap: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgPauseZRC20: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3793,7 +3981,7 @@ func (m *MsgUpdateZRC20LiquidityCap) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Zrc20Address", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Zrc20Addresses", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3821,11 +4009,111 @@ func (m *MsgUpdateZRC20LiquidityCap) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Zrc20Address = string(dAtA[iNdEx:postIndex]) + m.Zrc20Addresses = append(m.Zrc20Addresses, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 3: + 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 *MsgPauseZRC20Response) 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: MsgPauseZRC20Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgPauseZRC20Response: 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 *MsgUnpauseZRC20) 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: MsgUnpauseZRC20: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUnpauseZRC20: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LiquidityCap", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3853,9 +4141,39 @@ func (m *MsgUpdateZRC20LiquidityCap) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.LiquidityCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Zrc20Addresses", 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.Zrc20Addresses = append(m.Zrc20Addresses, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -3878,7 +4196,7 @@ func (m *MsgUpdateZRC20LiquidityCap) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateZRC20LiquidityCapResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUnpauseZRC20Response) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3901,10 +4219,10 @@ func (m *MsgUpdateZRC20LiquidityCapResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateZRC20LiquidityCapResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUnpauseZRC20Response: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateZRC20LiquidityCapResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUnpauseZRC20Response: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: From 89ca461c7b15a339dd31be4dffb7f9e42ba8709e Mon Sep 17 00:00:00 2001 From: Alex Gartner Date: Wed, 29 May 2024 02:19:34 -0700 Subject: [PATCH 2/2] fix: remove quotes from e2e args (#2284) --- contrib/localnet/orchestrator/start-zetae2e.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contrib/localnet/orchestrator/start-zetae2e.sh b/contrib/localnet/orchestrator/start-zetae2e.sh index ead84ee4d1..a297be595b 100644 --- a/contrib/localnet/orchestrator/start-zetae2e.sh +++ b/contrib/localnet/orchestrator/start-zetae2e.sh @@ -136,9 +136,9 @@ if [ "$OPTION" == "upgrade" ]; then # When the upgrade height is greater than 100 for upgrade test, the Bitcoin tests have been run once, therefore the Bitcoin wallet is already set up # Use light flag to skip advanced tests if [ "$UPGRADE_HEIGHT" -lt 100 ]; then - zetae2e "$ZETAE2E_CMD" --skip-setup --config deployed.yml --light --skip-header-proof + zetae2e $ZETAE2E_CMD --skip-setup --config deployed.yml --light --skip-header-proof else - zetae2e "$ZETAE2E_CMD" --skip-setup --config deployed.yml --skip-bitcoin-setup --light --skip-header-proof + zetae2e $ZETAE2E_CMD --skip-setup --config deployed.yml --skip-bitcoin-setup --light --skip-header-proof fi ZETAE2E_EXIT_CODE=$? @@ -156,7 +156,7 @@ else echo "running e2e setup..." if [[ ! -f deployed.yml ]]; then - zetae2e "$ZETAE2E_CMD" --setup-only --config-out deployed.yml + zetae2e $ZETAE2E_CMD --setup-only --config-out deployed.yml if [ $? -ne 0 ]; then echo "e2e setup failed" exit 1 @@ -167,7 +167,7 @@ else echo "running e2e tests..." - zetae2e "$ZETAE2E_CMD" --skip-setup --config deployed.yml + zetae2e $ZETAE2E_CMD --skip-setup --config deployed.yml ZETAE2E_EXIT_CODE=$? # if e2e passed, exit with 0, otherwise exit with 1