Skip to content

Conversation

@snissn
Copy link
Contributor

@snissn snissn commented Jan 21, 2026

Abstract

This FIP proposes adding a P256VERIFY precompile at Ethereum address 0x0000000000000000000000000000000000000100 (i.e., 0x0100) to the FEVM. The precompile verifies an ECDSA signature (r,s) against a 32-byte message hash and an uncompressed public key (x,y) on the secp256r1 curve, returning 0x…01 on success and an empty byte array on failure.

For Filecoin’s purposes, EIP-7951 and RIP-7212 should be understood as addressing the same user-facing feature: a P256VERIFY precompile at 0x0100. At the EVM interface level they are equivalent: same address, same 160-byte input format, and same return values/failure behavior. The key difference is that EIP-7951 tightens validation/verification requirements (notably: a point-at-infinity check and a modular comparison r' ≡ r (mod n)), while Ethereum’s fixed EVM gas schedule for this precompile is not directly applicable to FEVM’s gas accounting model.

Accordingly, this FIP targets EIP-7951 semantics while remaining interface-compatible with RIP-7212-style callers.

Discussion

#1227

Reference Implementation

filecoin-project/builtin-actors#1708

@rvagg
Copy link
Member

rvagg commented Jan 21, 2026

@snissn uncontroversial IMO so let's assign FIP number 0113 to this one - update filename, frontmatter and README.

Copy link
Contributor

@lanzafame lanzafame left a comment

Choose a reason for hiding this comment

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

Approval assumes changes put forward by rvagg

## Abstract
This FIP proposes adding a `P256VERIFY` precompile at Ethereum address `0x0000000000000000000000000000000000000100` (i.e., `0x0100`) to the FEVM. The precompile verifies an ECDSA signature `(r,s)` against a 32-byte message hash and an uncompressed public key `(x,y)` on the secp256r1 curve, returning `0x…01` on success and an empty byte array on failure.

For Filecoin’s purposes, **EIP-7951 and RIP-7212 should be understood as addressing the same user-facing feature**: a `P256VERIFY` precompile at `0x0100`. At the EVM interface level they are equivalent: same address, same 160-byte input format, and same return values/failure behavior. The key difference is that EIP-7951 tightens validation/verification requirements (notably: a point-at-infinity check and a modular comparison `r' ≡ r (mod n)`), while Ethereum’s fixed *EVM gas schedule* for this precompile is not directly applicable to FEVM’s gas accounting model.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
For Filecoin’s purposes, **EIP-7951 and RIP-7212 should be understood as addressing the same user-facing feature**: a `P256VERIFY` precompile at `0x0100`. At the EVM interface level they are equivalent: same address, same 160-byte input format, and same return values/failure behavior. The key difference is that EIP-7951 tightens validation/verification requirements (notably: a point-at-infinity check and a modular comparison `r' ≡ r (mod n)`), while Ethereum’s fixed *EVM gas schedule* for this precompile is not directly applicable to FEVM’s gas accounting model.
For Filecoin’s purposes, **EIP-7951 and [RIP-7212](https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md) should be understood as addressing the same user-facing feature**: a `P256VERIFY` precompile at `0x0100`. At the EVM interface level they are equivalent: same address, same 160-byte input format, and same return values/failure behavior. The key difference is that EIP-7951 tightens validation/verification requirements (notably: a point-at-infinity check and a modular comparison `r' ≡ r (mod n)`), while Ethereum’s fixed *EVM gas schedule* for this precompile is not directly applicable to FEVM’s gas accounting model.

We seem to be missing a pointer to RIP-7212, despite many subsequent references and overall relevance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants