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

Supporting Multiple Signature Algorithms in Cosmos SDK for Compatibility with Major Wallets #20822

Open
TraderWithPython opened this issue Jun 30, 2024 · 3 comments
Assignees

Comments

@TraderWithPython
Copy link

We are planning to develop a blockchain based on the Cosmos SDK, and we would like to support the following two signature algorithms simultaneously:

  1. The default secp256k1 signature algorithm in Cosmos SDK, which is compatible with Cosmos ecosystem wallets like Keplr.

  2. The Ethereum ECDSA secp256k1 signature algorithm, which is compatible with Ethereum wallets like MetaMask.

The goal is to make it convenient for users to manage their assets using the wallets they are familiar with, reducing the hassle of importing private keys. It also aims to better support cross-chain interactions with both the Cosmos and Ethereum ecosystems.

We noticed that PR #5278 has introduced interchangeable key implementations for the Cosmos SDK, but it seems that supporting multiple signature algorithms on a single chain is not yet possible.

We would like to ask:

  1. Is there any plan for Cosmos SDK to support using multiple signature algorithms on the same chain?

  2. If there is no ready-made support at the moment, how can we customize and develop this feature based on the SDK? Which modules need to be modified?

  3. While supporting multiple signature algorithms, how can we ensure compatibility with the existing Cosmos IBC protocol to support cross-chain functionality?

  4. Do you have any other suggestions regarding this feature?

We hope that the maintainers of the Cosmos SDK could provide guidance to help us achieve this goal. If there is anything unclear, please feel free to reach out to us for clarification.

Thank you in advance!

@github-actions github-actions bot added the needs-triage Issue that needs to be triaged label Jun 30, 2024
@tac0turtle tac0turtle added T:question and removed needs-triage Issue that needs to be triaged labels Jul 1, 2024
@tac0turtle
Copy link
Member

Hey sorry for the delay. Supporting multiple today is possible. There are some changes needed. Specifically you will need to add the key type, create your own antehandler potentially to allow for different curves to be verified. Integration with metamask is also around jsonrpc integration. We don't have this today. You will need to implement this

@tac0turtle tac0turtle self-assigned this Aug 13, 2024
@TraderWithPython
Copy link
Author

Hey sorry for the delay. Supporting multiple today is possible. There are some changes needed. Specifically you will need to add the key type, create your own antehandler potentially to allow for different curves to be verified. Integration with metamask is also around jsonrpc integration. We don't have this today. You will need to implement this

If the chain need to support two types of signatures simultaneously, it actually need to know the correspondence between Cosmos addresses and Ethereum addresses. Can Cosmos addresses and Ethereum addresses be derived from each other? I haven't found an existing solution yet.

@TraderWithPython
Copy link
Author

Hey sorry for the delay. Supporting multiple today is possible. There are some changes needed. Specifically you will need to add the key type, create your own antehandler potentially to allow for different curves to be verified. Integration with metamask is also around jsonrpc integration. We don't have this today. You will need to implement this

If the chain need to support two types of signatures simultaneously, it actually need to know the correspondence between Cosmos addresses and Ethereum addresses. Can Cosmos addresses and Ethereum addresses be derived from each other? I haven't found an existing solution yet.

I think I understand now. Cosmos SDK stores the account public key. The public key is the same for both Cosmos and Ethereum, so the addresses can be derived from each other. Although Ethereum transactions don't carry the public key, in reality, the public key can be derived from the transaction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 🤸‍♂️ In Progress
Development

No branches or pull requests

3 participants