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

🎁 [Feature Request]: Add secp256r1 precompile #267

Open
2 of 3 tasks
ozgunozerk opened this issue Jul 30, 2024 · 5 comments
Open
2 of 3 tasks

🎁 [Feature Request]: Add secp256r1 precompile #267

ozgunozerk opened this issue Jul 30, 2024 · 5 comments
Assignees
Labels
enhancement New feature or request

Comments

@ozgunozerk
Copy link
Collaborator

templates

  • Generic Runtime Template
  • Evm Template

What is the feature you would like to see?

Citing from: https://eips.ethereum.org/EIPS/eip-7212

“secp256r1” elliptic curve is a standardized curve by NIST which has the same calculations by different input parameters with “secp256k1” elliptic curve used by the “ecrecover” precompiled contract. The cost of combined attacks and the security conditions are almost the same for both curves. Adding a precompiled contract which is similar to “ecrecover” can provide signature verifications using the “secp256r1” elliptic curve in the smart contracts and multi-faceted benefits can occur. One important factor is that this curve is widely used and supported in many modern devices such as Apple’s Secure Enclave, Webauthn, Android Keychain which proves the user adoption. Additionally, the introduction of this precompiled contract could enable valuable features in the account abstraction which allows more efficient and flexible management of accounts by transaction signs in mobile devices. Most of the modern devices and applications rely on the “secp256r1” elliptic curve. The addition of this precompiled contract enables the verification of device native transaction signing mechanisms. For example:

  • Apple’s Secure Enclave: There is a separate “Trusted Execution Environment” in Apple hardware which can sign arbitrary messages and can only be accessed by biometric identification.
  • Webauthn: Web Authentication (WebAuthn) is a web standard published by the World Wide Web Consortium (W3C). WebAuthn aims to standardize an interface for authenticating users to web-based applications and services using public-key cryptography. It is being used by almost all of the modern web browsers.
  • Android Keystore: Android Keystore is an API that manages the private keys and signing methods. The private keys are not processed while using Keystore as the applications’ signing method. Also, it can be done in the “Trusted Execution Environment” in the microchip.
  • Passkeys: Passkeys is utilizing FIDO Alliance and W3C standards. It replaces passwords with cryptographic key-pairs which is also can be used for the elliptic curve cryptography.

Contribution Guidelines

  • I agree to follow this project's Contribution Guidelines
@stiiifff
Copy link

@ozgunozerk Keen to see this happening .. any timeline ?

@athei
Copy link

athei commented Dec 20, 2024

Are we talking about this: https://www.evm.codes/precompiled?fork=cancun#0x01

Because the link is broken.

@stiiifff
Copy link

@athei it's about this one: https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md.
There is a Polkadot RFC polkadot-fellows/RFCs#113 to add a host function.
FYI Moonbeam has a precompile but this is obviously not efficient to implement this in the runtime.

@athei
Copy link

athei commented Dec 20, 2024

Ahh okay I confused it with the already available secp256k1. Thanks.

@4meta5 4meta5 self-assigned this Dec 20, 2024
@4meta5
Copy link
Contributor

4meta5 commented Dec 20, 2024

any timeline ?

Working on it. Now we are proposing and getting feedback on precompile prioritization with Parity. I expect it to be included in our next milestone and am looking forward to taking it on, but not 100% sure on the timeline especially if it includes implementing the host function polkadot-fellows/RFCs#113

FYI Moonbeam has a precompile but this is obviously not efficient to implement this in the runtime.

@stiiifff Thanks for linking to this! Is it inefficient because it does not use the proposed host function polkadot-fellows/RFCs#113 ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: 🗒 Backlog
Development

No branches or pull requests

4 participants