[Review] Remove BLS-12377, BLS-12381, CIP-20 and CIP-25 precompiles #392
Closed
gastonponti
started this conversation in
CIP Discussions
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Simple Summary
Remove all precompiles related to the BLS-12377 curve (CIP-30), the BLS-12381 (CIP-31) curve, the CIP-20 and CIP-25.
Abstract
This CIP proposes to remove all precompiles related to the BLS-12377 curve, the BLS-12381 curve, the CIP-20 and CIP-25.
Motivation
In the context of moving Celo closer to Ethereum and reducing technical debt these precompile removals offer the opportunity to remove unused code.
The additions to Celo were proposed in the following CIPs:
Both EIP-2539 and EIP-2537 were never accepted into Ethereum and are therefore a good target for deprecation before the move to an L2. CIP-20 and CIP-25, also unused precompiles, are added as part as this deprecation CIP to be closer to Ethereum.
Specification
The following precompiles will be removed and no longer be accessible after the Gingerbread hardfork.
0x00000000000000000000000000000000000000F3
ed25519Verify
0x00000000000000000000000000000000000000F2
bls12381G1Add
0x00000000000000000000000000000000000000F1
bls12381G1Mul
0x00000000000000000000000000000000000000F0
bls12381G1MultiExp
0x00000000000000000000000000000000000000EF
bls12381G2Add
0x00000000000000000000000000000000000000EE
bls12381G2Mul
0x00000000000000000000000000000000000000ED
bls12381G2MultiExp
0x00000000000000000000000000000000000000EC
bls12381Pairing
0x00000000000000000000000000000000000000EB
bls12381MapG1
0x00000000000000000000000000000000000000EA
bls12381MapG2
0x00000000000000000000000000000000000000E9
bls12377G1Add
0x00000000000000000000000000000000000000E8
bls12377G1Mul
0x00000000000000000000000000000000000000E7
bls12377G1MultiExp
0x00000000000000000000000000000000000000E6
bls12377G2Add
0x00000000000000000000000000000000000000E5
bls12377G2Mul
0x00000000000000000000000000000000000000E4
bls12377G2MultiExp
0x00000000000000000000000000000000000000E3
bls12377Pairing
0x00000000000000000000000000000000000000E2
cip20HashFunctions
Rationale
In the pursuit of reducing the differences between Celo and Ethereum, which will help us in the transition to being an L2, and as none of these precompiles has ever been invoked (used) by any transaction in all of our networks (at the time of writing this CIP), removing these precompiles is not only safe but is also going to bring our code base closer to Ethereum.
Backwards Compatibility
Changes to precompiles impact the execution environment and require a hard fork.
Test Cases
The precompiles must not be accessible at the addresses noted under (#Specification) after the hardfork has been activated.
Implementation
Implementations suggestion are available at celo-org/celo-blockchain#2168 and celo-org/celo-blockchain#2177
Security Considerations
No known security considerations.
License
This work is licensed under the Apache License, Version 2.0.
Beta Was this translation helpful? Give feedback.
All reactions