Skip to content

Latest commit

 

History

History
81 lines (57 loc) · 4.38 KB

cip-0063.md

File metadata and controls

81 lines (57 loc) · 4.38 KB
cip title author discussions-to status type category created license
63
Remove BLS-12377, BLS-12381, CIP-20 and CIP-25 precompiles
Paul Lange (@palango), Gastón Ponti (@gastonponti)
Final
Standards Track
Ring 0
2023-07-03
Apache 2.0

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 of this deprecation CIP to be closer to Ethereum.

Specification

The following precompiles will be removed and no longer be accessible after the Gingerbread hardfork.

Address Name
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.