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

refactor: integrated base signer structure into existing EVM/BTC signers #2357

Merged
merged 22 commits into from
Jun 21, 2024

Conversation

ws4charlie
Copy link
Contributor

@ws4charlie ws4charlie commented Jun 20, 2024

Description

The PR integrated base Signer structures into existing EVM/BTC Signer structures.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Include instructions and any relevant details so others can reproduce.

  • Tested CCTX in localnet
  • Tested in development environment
  • Go unit tests
  • Go integration tests
  • Tested via GitHub Actions

Checklist:

  • I have added unit tests that prove my fix feature works

Summary by CodeRabbit

  • New Features

    • Introduced a function to create temporary directories for testing purposes.
  • Refactor

    • Integrated base.Signer structure into EVM/Bitcoin Signers for improved modularity.
    • Updated TSSSigner interface to include batch signing capability.
  • Bug Fixes

    • Enhanced thread safety in Signer structs by adding mutexes and related methods.
  • Tests

    • Modified test cases to reflect changes in Signer initialization and new method signatures.
  • Chores

    • Removed unused imports and logger initialization for cleanliness and performance improvements.

Copy link

gitguardian bot commented Jun 20, 2024

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
11759679 Triggered Generic High Entropy Secret 5edd452 cmd/zetae2e/local/accounts.go View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

Copy link

!!!WARNING!!!
nosec detected in the following files: zetaclient/chains/bitcoin/signer/signer.go, zetaclient/chains/evm/signer/signer.go

Be very careful about using #nosec in code. It can be a quick way to suppress security warnings and move forward with development, it should be employed with caution. Suppressing warnings with #nosec can hide potentially serious vulnerabilities. Only use #nosec when you're absolutely certain that the security issue is either a false positive or has been mitigated in another way.

Only suppress a single rule (or a specific set of rules) within a section of code, while continuing to scan for other problems. To do this, you can list the rule(s) to be suppressed within the #nosec annotation, e.g: /* #nosec G401 */ or //#nosec G201 G202 G203
Broad #nosec annotations should be avoided, as they can hide other vulnerabilities. The CI will block you from merging this PR until you remove #nosec annotations that do not target specific rules.

Pay extra attention to the way #nosec is being used in the files listed above.

@github-actions github-actions bot added the nosec label Jun 20, 2024
Copy link

codecov bot commented Jun 20, 2024

Codecov Report

Attention: Patch coverage is 51.42857% with 34 lines in your changes missing coverage. Please review.

Project coverage is 68.64%. Comparing base (2946edd) to head (8500a77).

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #2357      +/-   ##
===========================================
- Coverage    68.68%   68.64%   -0.04%     
===========================================
  Files          304      304              
  Lines        19159    19153       -6     
===========================================
- Hits         13159    13148      -11     
- Misses        5351     5356       +5     
  Partials       649      649              
Files Coverage Δ
zetaclient/chains/base/signer.go 100.00% <100.00%> (ø)
zetaclient/tss/tss_signer.go 9.81% <0.00%> (ø)
zetaclient/chains/evm/signer/signer.go 52.58% <75.00%> (-1.39%) ⬇️
zetaclient/chains/bitcoin/signer/signer.go 18.21% <23.07%> (-1.14%) ⬇️

Copy link
Member

@lumtis lumtis left a comment

Choose a reason for hiding this comment

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

👍

changelog.md Outdated Show resolved Hide resolved
zetaclient/chains/evm/signer/signer.go Outdated Show resolved Hide resolved
Copy link
Contributor

@kingpinXD kingpinXD left a comment

Choose a reason for hiding this comment

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

lgtm

Copy link
Contributor

coderabbitai bot commented Jun 21, 2024

Warning

Review failed

The pull request is closed.

Walkthrough

The recent changes integrate the base.Signer structure into the EVM/Bitcoin Signer, streamline logging by removing unused imports and the zerolog library, introduce a temporary directory utility for testing, and enhance thread safety by adding mutex locks. Test files have been adjusted to match these updates, and the TSS signing interface now supports batch signing.

Changes

File(s) Change Summary
changelog.md Integrated base.Signer structure into EVM/Bitcoin Signer details.
cmd/zetaclientd/debug.go Removed io, zerolog imports; eliminated io.Discard, zerolog usage.
cmd/zetaclientd/utils.go Renamed coreContext to zetacoreContext; changed NewSigner argument order.
testutil/sample/os.go Introduced CreateTempDir for testing.
zetaclient/chains/base/logger_test.go
zetaclient/chains/base/observer_test.go
Replaced createTempDir(t) with sample.CreateTempDir(t).
zetaclient/chains/base/signer.go Added mutex field mu to base.Signer; introduced Mu() and revised Logger() methods.
zetaclient/chains/base/signer_test.go Added a test case for mutex retrieval in signer.
zetaclient/chains/bitcoin/signer/signer.go Embedded base.Signer, modified method calls, adjusted logging, restructured fields.
zetaclient/chains/bitcoin/signer/signer_keysign_test.go
zetaclient/chains/bitcoin/signer/signer_test.go
Revised constructor parameters, removed deprecated dependencies, updated method references.
zetaclient/chains/evm/signer/signer.go Embed base.Signer, added concurrency, logging improvements, new retry mechanism.
zetaclient/chains/evm/signer/signer_test.go Updated getNewEvmSigner, modified parameters to NewSigner, updated methods.
zetaclient/chains/interfaces/interfaces.go Updated TSSSigner Sign method, added SignBatch.
zetaclient/testutils/mocks/btc_rpc.go
zetaclient/testutils/mocks/evm_rpc.go
zetaclient/testutils/mocks/tss_signer.go
Altered mock structures to handle additional fields, errors.
zetaclient/tss/tss_signer.go Updated Sign method to use chainID, added SignBatch method.

In the code's vast, intricate dance,
We've given Signer a new chance.
Embedded mutex, logging refined,
For thread-safe paths intertwined.
Observers cleared, mocks now shine,
Celebrate these changes, all in line!


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 Configration 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.

@ws4charlie ws4charlie merged commit f9ca2be into develop Jun 21, 2024
17 of 19 checks passed
@ws4charlie ws4charlie deleted the refactor-integrate-base-signer branch June 21, 2024 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants