PIP-27: Precompiled for secp256r1 Curve Support

Hello Polygon community!

This post is about the PIP-27, migrated from the EIP-7212, and proposes adding a new precompiled contract to the EVM that allows signature verifications in the “secp256r1” elliptic curve by given parameters of message hash, r - s components of the signature, and x - y coordinates of the public key.

We believe that its inclusion in the Polygon mainnet is valuable to enhance user and developer experiences by maximizing security for this elliptic curve’s operations. Polygon has one of the most adopted ecosystem of account abstraction and this precompiled contract contributes to this ecosystem in many areas. Also, this EIP’s inclusion to other EVM chains before the L1 is encouraged in an ACDE call.

:purple_circle: Please follow the discussion and details in the EIP forum:

3 Likes

A big fan of adding this precompile to PoS & zkEVM, I would love to hear from the various prover teams to see how this would effect timelines for zkPoS & zkEVM.

Also closely watching the new L2 Devs Group (RollCall) RollCall - Layer 2 protocol & EVM standardization call #0 · Issue #885 · ethereum/pm · GitHub to ensure broader alignment / compatibility with the EVM long term.

This feels like part of a larger discussion on what the Polygon Ecosystem’s approach to EVM+ should be.

Would love to see a governance call or space dedicated to this topic at large.

2 Likes

Based on the ecosystem discussion at the next RollCall, if the interface is agreed on (verify vs recover) I would support inclusion in the next hardfork after Agra.

From the zkEVM/zkPoS perspective, we already have the ability to easily support arbitrary curves defined over 256-bit fields, so I’d be supportive of its inclusion.

2 Likes

thanks @bfarmer. if there is ecosystem support we see no major issues adding this on PoS.

2 Likes

Hello,

Happy to share some updates about the EIP RIP-7212 and its inclusion in the Polygon. Thanks for the interest and fast-moving of the Polygon community for the integration

EIP to RIP

As discussed in the RollCall#0 and RollCall#1, the final decision is that it would be more beneficial and quick to continue the proposal as a RIP. Thus, willing rollups will be allowed to complete their implementation around the standardization created with RIP.

In this regard, a copy of the EIP with RIP naming has been merged into the RIP repo in the Last Call by applying the lates spec changes. The Last Call will be concluded on October 4th and moved to Final with finalized specs :point_down:

https://github.com/ethereum/RIPs/pull/6

PIP Update

By following the RIP updates, the PIP has been updated and merged :point_down:

https://github.com/maticnetwork/Polygon-Improvement-Proposals/pull/229#event-11327145962

PPGC#11 and Napoli Hard Fork

Sharing the updates by referencing the tweet of @H_Rook


RIP-7212, discussed in PPGC#11, was then introduced as an addition to the Napoli upgrade.

@ulerdogan gave some updates on the readiness of the proposal. RollCall 0,1 had discussed some of the final details and moved the proposal to ‘Last Call’. The decision around precompile address discussed on ACD:

https://x.com/timbeiko/status/1737902634911301774?s=46&t=T8MShZqY-nk3vimOtnEHWg…

It is expected that the proposal will move to ‘Final’ in the first week of January, at which point it will be officially added to Napoli. The timeline is currently not confirmed, realistically, we can expect a rollout on testnet in January/February.

Polygon Network Implementation

This PR by @anshalshukla implements the reference implementation into the Polygon codebase.

1 Like

Integration Update

With the Napoli Hard Fork in the Polygon PoS Chain, RIP-7212 (also PIP-27) is active on the mainnet. Congrats to the team for being the first to implement an RIP on the mainnet after Mumbai testnet.

Announcement Tweet

If you want to test by an RPC call, here is the instruction.

1 Like

Do you guys have a code snippet on how to do the verification onchain using Solidity?

@ECunha please check this code

1 Like