Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement MsgUpdateERC20CustodyPauseStatus to pause or unpause ERC20 Custody #2681

Merged
merged 35 commits into from
Aug 15, 2024

Conversation

lumtis
Copy link
Member

@lumtis lumtis commented Aug 12, 2024

Description

Closes: #2677

Similar to #2630 the message sends an admin cmd cctx.
It updates the ERC20Custody to paused or unpaused.

In practice, it will be used in V2 migration #2551 to pause the custody v1 to migrate to the new custody and prevent deposits in the meantime. Unpausing allow to revert in case of some frictions in the process

Summary by CodeRabbit

  • New Features

    • Implemented functionality to pause or unpause the ERC20 custody contract, enhancing control during critical operations.
    • Added API support to handle responses related to the pause status of the ERC20 custody.
    • Introduced a new message type for managing the pause status of the ERC20 custody contract.
    • Enhanced the command interface for managing ERC20 custody operations.
  • Bug Fixes

    • Improved error handling and validation in the pause/unpause functionality.
  • Tests

    • Expanded the test suite to cover new functionalities related to the pause status of the ERC20 custody contract, ensuring robust validation.
  • Documentation

    • Updated specifications and changelog to reflect the new features and improvements.

Copy link
Contributor

coderabbitai bot commented Aug 12, 2024

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

Walkthrough

The changes implement a command to pause or unpause the ERC20 Custody contract as part of the migration to version 2. This feature enhances governance over custody operations, allowing for administrative control to prevent deposits into the outdated version during the migration process. The new functionality is integrated into various components, including the API, messages, and testing frameworks, ensuring comprehensive control and validation of the custody status.

Changes

Files Change Summary
changelog.md, docs/spec/crosschain/messages.md, proto/zetachain/zetacore/crosschain/tx.proto Introduced MsgUpdateERC20CustodyPauseStatus message for pausing/unpausing ERC20 custody operations.
cmd/zetae2e/local/local.go, e2e/e2etests/e2etests.go, e2e/e2etests/test_pause_erc20_custody.go, x/authority/types/authorization_list_test.go, x/crosschain/types/cmd_cctxs_test.go Added tests to cover the new pause/unpause functionality, ensuring proper operation and validation.
docs/openapi/openapi.swagger.yaml, proto/zetachain/zetacore/crosschain/events.proto Updated API definitions for new message types and events related to ERC20 custody pause functionality.
pkg/constant/constant.go, x/crosschain/types/cmd_cctxs.go, x/crosschain/keeper/msg_server_update_erc20_custody_pause_status.go Introduced constants and functions to handle pause/unpause commands and manage associated logic.
zetaclient/chains/evm/signer/signer_admin.go, zetaclient/chains/evm/signer/signer_admin_test.go Enhanced transaction signing capabilities for the new pause/unpause commands, with corresponding tests to validate functionality.

Sequence Diagram(s)

sequenceDiagram
    participant Admin
    participant API
    participant Keeper
    participant Signer
    participant Blockchain

    Admin->>API: Send Pause/Unpause Command
    API->>Keeper: Validate Command and Update Status
    Keeper->>Signer: Prepare Transaction for Status Update
    Signer->>Blockchain: Send Transaction
    Blockchain->>Keeper: Confirm Status Update
    Keeper-->>API: Acknowledge Status Change
    API-->>Admin: Respond with Success/Failure
Loading

Assessment against linked issues

Objective Addressed Explanation
Ensure users can pause/unpause ERC20 custody (2677)
Develop messaging for pause/unpause functionality (2677)
Prevent deposits on v1 ERC20 custody during migration (2677) The current implementation does not explicitly prevent deposits; further validation may be needed.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@lumtis lumtis linked an issue Aug 12, 2024 that may be closed by this pull request
@lumtis lumtis marked this pull request as ready for review August 12, 2024 12:14
@lumtis lumtis added the ADMIN_TESTS Run make start-admin-tests label Aug 12, 2024
Copy link

codecov bot commented Aug 12, 2024

Codecov Report

Attention: Patch coverage is 95.45455% with 6 lines in your changes missing coverage. Please review.

Project coverage is 71.02%. Comparing base (e2351ce) to head (12e02dc).
Report is 1 commits behind head on develop.

Files Patch % Lines
zetaclient/chains/evm/signer/signer_admin.go 86.20% 2 Missing and 2 partials ⚠️
...er/msg_server_update_erc20_custody_pause_status.go 96.49% 1 Missing and 1 partial ⚠️
Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #2681      +/-   ##
===========================================
+ Coverage    70.85%   71.02%   +0.16%     
===========================================
  Files          344      346       +2     
  Lines        18677    18807     +130     
===========================================
+ Hits         13234    13358     +124     
- Misses        4855     4858       +3     
- Partials       588      591       +3     
Files Coverage Δ
x/authority/types/authorization_list.go 100.00% <ø> (ø)
x/crosschain/types/cmd_cctxs.go 97.48% <100.00%> (+0.40%) ⬆️
...types/message_update_erc20_custody_pause_status.go 100.00% <100.00%> (ø)
...er/msg_server_update_erc20_custody_pause_status.go 96.49% <96.49%> (ø)
zetaclient/chains/evm/signer/signer_admin.go 85.00% <86.20%> (+0.49%) ⬆️

x/crosschain/types/cmd_cctxs.go Outdated Show resolved Hide resolved
x/crosschain/types/cmd_cctxs.go Outdated Show resolved Hide resolved
lumtis and others added 2 commits August 12, 2024 16:27
Co-authored-by: skosito <skostic9242@gmail.com>
Co-authored-by: skosito <skostic9242@gmail.com>
Base automatically changed from feat/migrate-erc20-fund to develop August 15, 2024 08:47
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Outside diff range, codebase verification and nitpick comments (4)
proto/zetachain/zetacore/crosschain/tx.proto (2)

211-218: Clarify the purpose of fields in MsgUpdateERC20CustodyPauseStatus.

The message structure is clear, but consider adding comments to describe the purpose of each field, especially creator and chain_id, to enhance readability and maintainability.

message MsgUpdateERC20CustodyPauseStatus {
  string creator = 1; // The address of the entity initiating the command
  int64 chain_id = 2; // The ID of the blockchain where the custody is located

  // pause or unpause
  // true = pause, false = unpause
  bool pause = 3;
}

220-220: Consider future extensibility in MsgUpdateERC20CustodyPauseStatusResponse.

Currently, MsgUpdateERC20CustodyPauseStatusResponse only includes cctx_index. Consider if additional fields might be needed in the future for more comprehensive responses.

x/crosschain/types/cmd_cctxs.go (2)

33-34: Ensure consistent naming for gas multipliers.

The naming of ERC20CustodyPausingGasMultiplierEVM should be consistent with other similar constants. Ensure that the naming convention aligns with the rest of the codebase.


120-126: Enhance the GetERC20CustodyPausingCmdCCTXIndexString function for consistency.

Ensure that the index string format is consistent with other similar functions to maintain uniformity across the codebase.

Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between e2351ce and 769f048.

Files ignored due to path filters (4)
  • typescript/zetachain/zetacore/crosschain/events_pb.d.ts is excluded by !**/*_pb.d.ts
  • typescript/zetachain/zetacore/crosschain/tx_pb.d.ts is excluded by !**/*_pb.d.ts
  • x/crosschain/types/events.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • x/crosschain/types/tx.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
Files selected for processing (20)
  • changelog.md (1 hunks)
  • cmd/zetae2e/local/local.go (1 hunks)
  • docs/openapi/openapi.swagger.yaml (1 hunks)
  • docs/spec/crosschain/messages.md (1 hunks)
  • e2e/e2etests/e2etests.go (2 hunks)
  • e2e/e2etests/test_pause_erc20_custody.go (1 hunks)
  • pkg/constant/constant.go (2 hunks)
  • proto/zetachain/zetacore/crosschain/events.proto (1 hunks)
  • proto/zetachain/zetacore/crosschain/tx.proto (2 hunks)
  • x/authority/types/authorization_list.go (1 hunks)
  • x/authority/types/authorization_list_test.go (1 hunks)
  • x/crosschain/keeper/msg_server_migrate_erc20_custody_funds_test.go (2 hunks)
  • x/crosschain/keeper/msg_server_update_erc20_custody_pause_status.go (1 hunks)
  • x/crosschain/keeper/msg_server_update_erc20_custody_pause_status_test.go (1 hunks)
  • x/crosschain/types/cmd_cctxs.go (3 hunks)
  • x/crosschain/types/cmd_cctxs_test.go (1 hunks)
  • x/crosschain/types/message_update_erc20_custody_pause_status.go (1 hunks)
  • x/crosschain/types/message_update_erc20_custody_pause_status_test.go (1 hunks)
  • zetaclient/chains/evm/signer/signer_admin.go (3 hunks)
  • zetaclient/chains/evm/signer/signer_admin_test.go (6 hunks)
Additional context used
Path-based instructions (17)
x/crosschain/types/message_update_erc20_custody_pause_status.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

proto/zetachain/zetacore/crosschain/events.proto (1)

Pattern **/*.proto: Review the Protobuf definitions, point out issues relative to compatibility, and expressiveness.

pkg/constant/constant.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

e2e/e2etests/test_pause_erc20_custody.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

x/crosschain/keeper/msg_server_update_erc20_custody_pause_status.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

x/crosschain/types/message_update_erc20_custody_pause_status_test.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

zetaclient/chains/evm/signer/signer_admin.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

x/authority/types/authorization_list.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

proto/zetachain/zetacore/crosschain/tx.proto (1)

Pattern **/*.proto: Review the Protobuf definitions, point out issues relative to compatibility, and expressiveness.

x/crosschain/types/cmd_cctxs.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

zetaclient/chains/evm/signer/signer_admin_test.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

x/crosschain/keeper/msg_server_migrate_erc20_custody_funds_test.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

x/crosschain/keeper/msg_server_update_erc20_custody_pause_status_test.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

x/authority/types/authorization_list_test.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

cmd/zetae2e/local/local.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

e2e/e2etests/e2etests.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

x/crosschain/types/cmd_cctxs_test.go (1)

Pattern **/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

GitHub Check: codecov/patch
x/crosschain/keeper/msg_server_update_erc20_custody_pause_status.go

[warning] 94-94: x/crosschain/keeper/msg_server_update_erc20_custody_pause_status.go#L94
Added line #L94 was not covered by tests

zetaclient/chains/evm/signer/signer_admin.go

[warning] 119-119: zetaclient/chains/evm/signer/signer_admin.go#L119
Added line #L119 was not covered by tests


[warning] 137-137: zetaclient/chains/evm/signer/signer_admin.go#L137
Added line #L137 was not covered by tests

LanguageTool
docs/spec/crosschain/messages.md

[misspelling] ~291-~291: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ... UpdateERC20CustodyPauseStatus creates a admin cmd cctx to update the pause stat...

(EN_A_VS_AN)

Markdownlint
docs/spec/crosschain/messages.md

295-295: Column: 1
Hard tabs

(MD010, no-hard-tabs)


296-296: Column: 1
Hard tabs

(MD010, no-hard-tabs)


297-297: Column: 1
Hard tabs

(MD010, no-hard-tabs)

Additional comments not posted (38)
docs/openapi/openapi.swagger.yaml (1)

Line range hint 1-1:
Confirm the addition of the new response object.

The new object crosschainMsgUpdateERC20CustodyPauseStatusResponse with the cctx_index property has been added. Ensure that this addition is consistent with the existing API design and that the cctx_index property is adequately documented and utilized within the API.

x/crosschain/types/message_update_erc20_custody_pause_status.go (4)

9-9: Define constants with appropriate naming conventions.

The constant TypeUpdateERC20CustodyPauseStatus is well-defined. Ensure that this naming convention is consistently used across the codebase for message types.


13-23: Constructor function for message struct is well-implemented.

The NewMsgUpdateERC20CustodyPauseStatus function correctly initializes the struct with the provided parameters. Ensure that input validation is handled elsewhere if necessary.


25-31: Implement routing and type methods correctly.

The Route and Type methods are implemented correctly for the message. Ensure that the RouterKey is defined and used consistently in the module.


46-52: Validate input thoroughly in ValidateBasic.

The ValidateBasic method correctly checks the creator address. Ensure additional validation is performed if required by business logic.

proto/zetachain/zetacore/crosschain/events.proto (1)

79-83: New Protobuf message EventERC20CustodyPausing is well-defined.

The message fields are appropriately chosen for the event's purpose. Ensure that these fields are documented and used consistently across the system, and consider adding comments for clarity.

pkg/constant/constant.go (1)

20-21: Constants for ERC20 custody pause status management are well-defined.

The addition of CmdUpdateERC20CustodyPauseStatus, OptionPause, and OptionUnpause constants is clear and enhances the command interface for managing the ERC20 custody contract's operational state.

Also applies to: 35-39

e2e/e2etests/test_pause_erc20_custody.go (1)

13-80: End-to-end test for ERC20 custody pause/unpause is comprehensive and well-structured.

The test effectively verifies the pausing and unpausing functionality of the ERC20 custody contract, ensuring that the operations are correctly executed and reflected in the contract's state.

x/crosschain/keeper/msg_server_update_erc20_custody_pause_status.go (1)

13-99: Function UpdateERC20CustodyPauseStatus is well-implemented with comprehensive error handling.

The function effectively manages the creation of a CCTX for pausing/unpausing the ERC20 custody contract, with appropriate checks and event emission. However, line 94 is not covered by tests.

Please ensure that the error handling path at line 94 is covered by tests to improve code coverage and reliability.

Tools
GitHub Check: codecov/patch

[warning] 94-94: x/crosschain/keeper/msg_server_update_erc20_custody_pause_status.go#L94
Added line #L94 was not covered by tests

x/crosschain/types/message_update_erc20_custody_pause_status_test.go (5)

15-59: Comprehensive test coverage for ValidateBasic.

The test cases effectively cover both valid and invalid scenarios for the ValidateBasic method of MsgUpdateERC20CustodyPauseStatus.


61-99: Robust testing for GetSigners.

The test cases effectively cover both valid and invalid signer scenarios for the GetSigners method of MsgUpdateERC20CustodyPauseStatus.


102-109: Correct verification of message type.

The test accurately verifies the Type method of MsgUpdateERC20CustodyPauseStatus.


111-118: Correct verification of router key.

The test accurately verifies the Route method of MsgUpdateERC20CustodyPauseStatus.


120-129: Ensures robustness of GetSignBytes.

The test correctly ensures that the GetSignBytes method of MsgUpdateERC20CustodyPauseStatus does not panic.

zetaclient/chains/evm/signer/signer_admin.go (1)

Line range hint 16-29: Consistent integration of new command.

The addition of CmdUpdateERC20CustodyPauseStatus in the SignAdminTx function is consistent with existing patterns and correctly routes the command to its handler.

x/authority/types/authorization_list.go (1)

26-26: Appropriate addition to AdminPolicyMessages.

The addition of "/zetachain.zetacore.crosschain.MsgUpdateERC20CustodyPauseStatus" to AdminPolicyMessages is appropriate and aligns with the intent of restricting execution to the admin policy address.

proto/zetachain/zetacore/crosschain/tx.proto (1)

40-41: Ensure compatibility with existing services.

The new UpdateERC20CustodyPauseStatus RPC method should be checked for compatibility with existing services and clients that interact with this proto file. Ensure that all necessary updates are made to accommodate this new method.

zetaclient/chains/evm/signer/signer_admin_test.go (2)

67-81: Ensure comprehensive test coverage for CmdUpdateERC20CustodyPauseStatus.

The test case for CmdUpdateERC20CustodyPauseStatus is well-structured and covers the signing process. Ensure that edge cases, such as invalid command parameters, are also tested.


213-289: New Test Function: TestSigner_SignUpdateERC20CustodyPauseStatusCmd is comprehensive.

The test function covers various scenarios such as successful signing for pause and unpause, invalid parameters, and TSS pause scenarios. This provides robust coverage for the new functionality.

x/crosschain/keeper/msg_server_migrate_erc20_custody_funds_test.go (1)

8-8: New Assertion: Verify RelayedMessage includes CmdMigrateERC20CustodyFunds.

The addition of this assertion strengthens the test by ensuring that the correct command is included in the relayed message. This is a valuable check for validating the migration logic.

Also applies to: 62-62

x/crosschain/keeper/msg_server_update_erc20_custody_pause_status_test.go (8)

18-72: Comprehensive Test: TestKeeper_UpdateERC20CustodyPauseStatus covers pause functionality.

The test case effectively verifies the creation of a CCTX for pausing the ERC20 custody status. It includes checks for command inclusion and gas price calculations, ensuring robust validation of the pause functionality.


74-97: Test for Unauthorized Access: Properly handles unauthorized scenarios.

The test ensures that unauthorized attempts to update the ERC20 custody pause status are correctly handled, which is crucial for maintaining security.


99-133: Test for Missing Chain Nonces: Validates error handling.

The test correctly checks for the absence of chain nonces, ensuring that the system responds appropriately to this missing data.


135-169: Test for Missing TSS: Validates error handling.

This test confirms that the system handles the absence of TSS keys correctly, which is essential for maintaining the integrity of the custody update process.


171-203: Test for Missing Chain Params: Ensures proper error handling.

The test case verifies that the absence of chain parameters is handled correctly, which is important for the robustness of the custody update process.


205-239: Test for Missing Gas Price: Validates error handling.

This test ensures that the system correctly handles scenarios where the gas price is unavailable, maintaining the reliability of the custody update process.


241-283: Test for Invalid Gas Amount: Correctly checks priority fees.

The test case effectively validates that priority fees higher than the gas price are handled as errors, ensuring proper transaction cost management.


285-321: Test for Unsupported Chain Params: Validates error handling.

This test confirms that the system handles unsupported chain parameters correctly, which is crucial for ensuring compatibility and stability.

x/authority/types/authorization_list_test.go (1)

417-417: Addition of MsgUpdateERC20CustodyPauseStatus to AdminPolicyMessageList is appropriate.

The inclusion of this message type URL aligns with the PR objectives to manage ERC20 Custody pause status, enhancing test coverage for admin policy authorizations.

cmd/zetae2e/local/local.go (1)

305-305: Addition of TestPauseERC20CustodyName to admin tests is appropriate.

This test case enhances the test suite by covering the new functionality for pausing ERC20 custody, aligning with the PR objectives.

e2e/e2etests/e2etests.go (2)

111-111: Definition of TestPauseERC20CustodyName is clear and consistent.

The test name is descriptive and aligns with naming conventions, facilitating easy identification within the test suite.


576-581: Addition of TestPauseERC20CustodyName to AllE2ETests is well-integrated.

The test case provides necessary coverage for the new pause functionality, with a clear description and appropriate argument setup.

x/crosschain/types/cmd_cctxs_test.go (5)

113-154: Approved: Comprehensive index uniqueness tests.

The test cases effectively cover variations in tssPubKey, nonce, chainID, and erc20Address, ensuring the uniqueness of the index string. The addition of chainID enhances the robustness of the test.


157-234: Approved: Thorough testing of command context creation.

The test accurately verifies the creation of a command context for pausing ERC20 custody. It ensures uniqueness across different nonce, tssPubKey, and chainID values. The integration of chainID is well-executed.


237-270: Approved: Effective uniqueness testing for index strings.

The test cases comprehensively cover different scenarios by varying tssPubKey, nonce, and chainID. The assertions effectively verify the uniqueness of the index strings.


Line range hint 10-109: Approved: Comprehensive test coverage for custody fund migration.

The test cases effectively validate the creation of command contexts for migrating ERC20 custody funds, ensuring uniqueness across different parameters. The integration of various scenarios is well-handled.


Line range hint 272-306: Approved: Effective testing of ERC20 whitelisting command contexts.

The test cases thoroughly cover the creation of command contexts for whitelisting ERC20 tokens, ensuring uniqueness based on the ZRC20 address. The assertions are correctly implemented.

changelog.md (1)

13-13: Approved: Accurate and clear changelog entry.

The changelog entry clearly and concisely describes the implementation of MsgUpdateERC20CustodyPauseStatus, accurately reflecting the changes made in the PR.

@lumtis lumtis enabled auto-merge August 15, 2024 18:48
@lumtis lumtis added this pull request to the merge queue Aug 15, 2024
Merged via the queue into develop with commit 7039dcc Aug 15, 2024
28 checks passed
@lumtis lumtis deleted the feat/pause-custody branch August 15, 2024 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Admin command: pause/unpause ERC20Custody
4 participants