Skip to content

Conversation

@mergify
Copy link
Contributor

@mergify mergify bot commented Mar 27, 2025

Description

Closes: #1861 (for real)

This PR introduces support for ed25519 transaction signing.
The original issue was brought up in #1861, but still the support remained missing in the SDK.

It also promotes a dependency from indirect to direct (filippo.io/edwards25519), since it has handy methods for verifying ed25519 public keys.

There is logic for subtracting gas from the gas meter when an ed25519 signature is encountered, but a simple error is always returned:

if err := meter.Consume(params.SigVerifyCostED25519, "ante verify: ed25519"); err != nil {
return err
}
return errorsmod.Wrap(sdkerrors.ErrInvalidPubKey, "ED25519 public keys are unsupported")

The change is backwards compatible, as it doesn't break existing SDK logic.


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, you can find examples of the prefixes below:

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

Please see Pull Request Reviewer section in the contributing guide for more information on how to review a pull request.

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

Summary by CodeRabbit

Release Notes

  • New Features

    • Added support for ed25519 transaction signatures, expanding transaction signing capabilities.
    • Introduced validation for ed25519 public keys to ensure they are on the correct cryptographic curve.
  • Improvements

    • Simplified signature verification process by removing custom verification functions for public keys.
    • Updated signature verification process to handle ed25519 keys more efficiently.
  • Documentation

    • Updated documentation to clarify the use of the tm-ed25519 scheme for both transaction authentication and consensus.
  • Dependency Updates

    • Added direct dependency on filippo.io/edwards25519 package.

These changes enhance the cryptographic signature handling and provide more robust key validation in the transaction signing process.


This is an automatic backport of pull request #23283 done by [Mergify](https://mergify.com).

Co-authored-by: Alex | Interchain Labs <[email protected]>
Co-authored-by: Alex | Interchain Labs <[email protected]>
Co-authored-by: Marko <[email protected]>
(cherry picked from commit d3e059d)

# Conflicts:
#	CHANGELOG.md
#	go.mod
#	x/auth/ante/sigverify.go
#	x/auth/ante/sigverify_test.go
@mergify mergify bot requested a review from a team March 27, 2025 18:39
@mergify mergify bot added the conflicts label Mar 27, 2025
@mergify
Copy link
Contributor Author

mergify bot commented Mar 27, 2025

Cherry-pick of d3e059d has failed:

On branch mergify/bp/release/v0.53.x/pr-23283
Your branch is up to date with 'origin/release/v0.53.x'.

You are currently cherry-picking commit d3e059dd2.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:
	modified:   crypto/keys/ed25519/ed25519.go
	modified:   crypto/keys/ed25519/ed25519_test.go
	modified:   docs/docs/learn/beginner/03-accounts.md

Unmerged paths:
  (use "git add <file>..." to mark resolution)
	both modified:   CHANGELOG.md
	both modified:   go.mod
	both modified:   x/auth/ante/sigverify.go
	both modified:   x/auth/ante/sigverify_test.go

To fix up this pull request, you can check it out locally. See documentation: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally

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