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

fix: allow empty public keys when setting signatures #19106

Merged
merged 2 commits into from
Jan 18, 2024

Conversation

cmwaters
Copy link
Contributor

Description

Closes: #19094


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • included the correct type prefix in the PR title
  • confirmed ! in the type prefix if API or client breaking change
  • targeted the correct branch (see PR Targeting)
  • provided a link to the relevant issue or specification
  • reviewed "Files changed" and left comments if necessary
  • included the necessary unit and integration tests
  • added a changelog entry to CHANGELOG.md
  • updated the relevant documentation or specification, including comments for documenting Go code
  • confirmed all CI checks have passed

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic, API design and naming, documentation is accurate, tests and test coverage

@cmwaters cmwaters requested a review from a team as a code owner January 18, 2024 19:56
Copy link
Contributor

coderabbitai bot commented Jan 18, 2024

Walkthrough

The changes involve enhancing the SetSignatures method in x/auth/tx/builder.go to ensure that transactions can be set with signatures even when the public key is not provided. This addresses a bug where the absence of a public key would result in a panic. Additionally, a new test case in x/auth/tx/builder_test.go ensures that the SetSignatures method behaves correctly when the public key is omitted, aligning with the expected behavior that not all transactions require a public key after the first one.

Changes

File Change Summary
x/auth/tx/builder.go Modified SetSignatures for robust PubKey handling and nil pointer checks.
x/auth/tx/builder_test.go Added TestSetSignaturesNoPublicKey to verify behavior without a public key.

Assessment against linked issues

Objective Addressed Explanation
Allow SetSignatures to function without a PubKey provided (#19094) The changes in builder.go include a check for sig.PubKey which allows SetSignatures to proceed without a public key, thus addressing the issue.
Ensure proper error handling in SetSignatures when PubKey is empty (#19094) By separating the declaration and assignment of pubKey and err, the code now handles errors more robustly when the public key is empty.
Add test coverage for scenarios where SetSignatures is called with an empty PubKey (#19094) The new test in builder_test.go provides the necessary validation that SetSignatures can be called with an empty public key.

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:

Note: Auto-reply has been disabled for this repository by the repository owner. The CodeRabbit bot will not respond to your comments unless it is explicitly tagged.

  • 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 tests 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 from git and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit tests.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

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 a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @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.
  • The JSON schema for the configuration file is available here.
  • 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/coderabbit-overrides.v2.json

CodeRabbit Discord Community

Join our Discord Community to get help, request features, and share feedback.

Comment on lines +130 to +142
func TestSetSignaturesNoPublicKey(t *testing.T) {
_, pubkey, _ := testdata.KeyTestPubAddr()
txBuilder := newBuilder(nil)
sig2 := signing.SignatureV2{
Data: &signing.SingleSignatureData{
SignMode: signing.SignMode_SIGN_MODE_DIRECT,
Signature: legacy.Cdc.MustMarshal(pubkey),
},
Sequence: 1,
}
err := txBuilder.SetSignatures(sig2)
require.NoError(t, err)
}
Copy link
Contributor

Choose a reason for hiding this comment

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

The new test function TestSetSignaturesNoPublicKey is added to verify the behavior of SetSignatures when no public key is provided. The test checks for the absence of errors when setting a signature without a public key, which aligns with the PR objectives. However, the test does not assert any post-conditions to ensure that the state of txBuilder is as expected after calling SetSignatures.

Consider adding assertions to check the state of txBuilder after SetSignatures is called to ensure it behaves as expected when no public key is provided.

Copy link
Contributor

@testinginprod testinginprod left a comment

Choose a reason for hiding this comment

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

lfg

@alexanderbez alexanderbez added this pull request to the merge queue Jan 18, 2024
Merged via the queue into cosmos:main with commit e621eb6 Jan 18, 2024
53 of 56 checks passed
@cmwaters
Copy link
Contributor Author

Thanks for the quick reviews 👍

@cmwaters cmwaters deleted the cal/allow-empty-pubkeys branch January 18, 2024 20:52
@julienrbrt
Copy link
Member

@Mergifyio backport release/v0.50.x

Copy link
Contributor

mergify bot commented Jan 18, 2024

backport release/v0.50.x

✅ Backports have been created

@julienrbrt
Copy link
Member

@Mergifyio backport release/v0.47.x

Copy link
Contributor

mergify bot commented Jan 18, 2024

backport release/v0.47.x

✅ Backports have been created

mergify bot pushed a commit that referenced this pull request Jan 18, 2024
(cherry picked from commit e621eb6)

# Conflicts:
#	x/auth/CHANGELOG.md
mergify bot pushed a commit that referenced this pull request Jan 18, 2024
(cherry picked from commit e621eb6)

# Conflicts:
#	x/auth/CHANGELOG.md
#	x/auth/tx/builder.go
julienrbrt added a commit that referenced this pull request Jan 19, 2024
#19107)

Co-authored-by: Callum Waters <cmwaters19@gmail.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
julienrbrt added a commit that referenced this pull request Jan 19, 2024
#19108)

Co-authored-by: Callum Waters <cmwaters19@gmail.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
relyt29 pushed a commit to relyt29/cosmos-sdk that referenced this pull request Jan 22, 2024
mmsqe pushed a commit to mmsqe/cosmos-sdk that referenced this pull request Feb 5, 2024
…#19106) (cosmos#19108)

Co-authored-by: Callum Waters <cmwaters19@gmail.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
MSalopek pushed a commit to informalsystems/cosmos-sdk that referenced this pull request Feb 27, 2024
…#19106) (cosmos#19108)

Co-authored-by: Callum Waters <cmwaters19@gmail.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
@faddat faddat mentioned this pull request Mar 20, 2024
12 tasks
emidev98 pushed a commit to terra-money/cosmos-sdk that referenced this pull request Mar 21, 2024
…#19106) (cosmos#19108)

Co-authored-by: Callum Waters <cmwaters19@gmail.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
yihuang added a commit to crypto-org-chain/cosmos-sdk that referenced this pull request May 16, 2024
* fix(server): consensus failure while restart node with wrong `chainId` in genesis (cosmos#18920)

* test: add NodeURI for clientCtx (backport cosmos#18930) (cosmos#18988)

Co-authored-by: mmsqe <tqd0800210105@gmail.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>

* chore: clean-up buf workspace (backport cosmos#18993) (cosmos#18998)

* build(deps): Bump cosmossdk.io/log from 1.2.1 to 1.3.0 (cosmos#19024)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* build(deps): Bump cosmossdk.io/errors from 1.0.0 to 1.0.1 (cosmos#19025)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* fix: allow empty public keys when setting signatures (backport cosmos#19106) (cosmos#19108)

Co-authored-by: Callum Waters <cmwaters19@gmail.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>

* chore: prepare v0.47.8 (cosmos#19162)

* docs: fix typo in 06-grpc_rest.md (backport cosmos#19192) (cosmos#19194)

Co-authored-by: Yoksirod <103229163+taramakage@users.noreply.github.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>

* fix: skip same-sender non-sequential sequence and then add others txs new solution (backport cosmos#19177) (cosmos#19250)

Co-authored-by: Brann Bronzebeard <90186866+ZiHengLee@users.noreply.github.com>
Co-authored-by: Facundo <facundomedica@gmail.com>
Co-authored-by: Facundo Medica <14063057+facundomedica@users.noreply.github.com>
Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com>

* test(baseapp): Refactor tx selector tests + better comments  (backport cosmos#19284) (cosmos#19288)

Co-authored-by: Facundo Medica <14063057+facundomedica@users.noreply.github.com>
Co-authored-by: Facundo <facundomedica@gmail.com>

* build(deps): Bump cosmossdk.io/log from 1.3.0 to 1.3.1 (cosmos#19359)

* chore: prepare v0.47.9 (cosmos#19451)

* build(deps): Bump github.com/cosmos/cosmos-proto from 1.0.0-beta.2 to 1.0.0-beta.4 (cosmos#19472)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>

* Merge pull request from GHSA-4j93-fm92-rp4m

* fix(x/auth/vesting): Add `BlockedAddr` check in `CreatePeriodicVestingAccount`

* updates

* build(deps): Bump cosmossdk.io/math from 1.2.0 to 1.3.0 (cosmos#19564)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>

* fix: use proper `db_backend` type when reading chain-id (cosmos#19573)

* Merge pull request from GHSA-86h5-xcpx-cfqc

* fix slashing logic

* add test

* changelog + release notes

* word

---------

Co-authored-by: Julien Robert <julien@rbrt.fr>

* build(deps): Bump deps (backport cosmos#19655) (cosmos#19712)

Co-authored-by: Julien Robert <julien@rbrt.fr>

* fix(x/gov): grpc query tally for failed proposal (backport cosmos#19725) (cosmos#19728)

Co-authored-by: David Tumcharoen <david@alleslabs.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>

* fix(crypto): error if incorrect ledger public key (backport cosmos#19691) (cosmos#19746)

Co-authored-by: Rootul P <rootulp@gmail.com>
Co-authored-by: sontrinh16 <trinhleson2000@gmail.com>

* build(deps): Bump github.com/cometbft/cometbft from 0.37.4 to 0.37.5 (cosmos#19752)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>

* fix: Implement gogoproto customtype to secp256r1 keys (backport cosmos#20027) (cosmos#20032)

Co-authored-by: Facundo Medica <14063057+facundomedica@users.noreply.github.com>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
Co-authored-by: Marko <marko@baricevic.me>

* fix: secp256r1 json missing quotes (backport cosmos#20060) (cosmos#20070)

Co-authored-by: Facundo Medica <14063057+facundomedica@users.noreply.github.com>

* build(deps): Bump github.com/cosmos/cosmos-proto from 1.0.0-beta.4 to 1.0.0-beta.5 (cosmos#20094)

* chore: prepare v0.47.11 (cosmos#20088)

* fix: use timestamp for sim log file name (backport cosmos#20108) (cosmos#20112)

Co-authored-by: mmsqe <mavis@crypto.com>

* fix(x/authz,x/feegrant): check blocked address (backport cosmos#20102) (cosmos#20114)

Co-authored-by: Julien Robert <julien@rbrt.fr>

* fix(testsuite/sims): set all signatures (backport cosmos#20151) (cosmos#20186)

Co-authored-by: Leon <156270887+leonz789@users.noreply.github.com>

* build(deps): Bump github.com/cometbft/cometbft from 0.37.5 to 0.37.6 (cosmos#20205)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* go mod tidy

* chore: downgrade to go 1.19 (cosmos#20211)

* chore: tidy with go 1.19 (cosmos#20220)

* chore: revert comet 0.37.6 upgrade due to go version bump (cosmos#20247)

* fix: remove txs from mempool when antehandler fails in recheck (backport cosmos#20144) (cosmos#20252)

Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>

* Revert "chore: downgrade to go 1.19 (cosmos#20211)"

This reverts commit aba4e40.

* Revert "chore: revert comet 0.37.6 upgrade due to go version bump (cosmos#20247)"

This reverts commit 00e4273.

* bump go in ci

* update docker file

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: atheeshp <59333759+atheeshp@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: mmsqe <tqd0800210105@gmail.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Callum Waters <cmwaters19@gmail.com>
Co-authored-by: Yoksirod <103229163+taramakage@users.noreply.github.com>
Co-authored-by: Brann Bronzebeard <90186866+ZiHengLee@users.noreply.github.com>
Co-authored-by: Facundo <facundomedica@gmail.com>
Co-authored-by: Facundo Medica <14063057+facundomedica@users.noreply.github.com>
Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: Kevin Yang <5478483+k-yang@users.noreply.github.com>
Co-authored-by: khanh <50263489+catShaark@users.noreply.github.com>
Co-authored-by: David Tumcharoen <david@alleslabs.com>
Co-authored-by: Rootul P <rootulp@gmail.com>
Co-authored-by: sontrinh16 <trinhleson2000@gmail.com>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: mmsqe <mavis@crypto.com>
Co-authored-by: Leon <156270887+leonz789@users.noreply.github.com>
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.

[Bug]: TxBuilder does not allow to SetSignatures with an empty Public Key
4 participants