Skip to content

Conflux-Chain/CIPs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Conflux Improvement Proposals

Conflux Improvement Proposals (CIPs) describe standards for the Conflux platform, including core protocol specifications, client APIs, and contract standards.

Contributing

  1. Review CIP-1.
  2. Fork the repository by clicking "Fork" in the top right.
  3. Add your CIP to your fork of the repository. There is a template CIP here.
  4. Submit a Pull Request to Conflux's CIPs repository.

Your initial PR should be a draft of the final CIP, and it must comply with the formatting rules set by the build, including correct metadata in the header.

Your PR ID may be utilized as a provisional CIP ID at the submitter's discretion, obviating the necessity for editorial approval. An editor will manually review the first PR for a new CIP and assign a definitive CIP ID. Typically, editors do not alter CIP ID. However, exceptions do occur, as demonstrated by CIP-1820. In the event that the chosen PR ID is occupied by an existing CIP, the submitter is obliged to await the editor's allocation of a new CIP ID. CIPs submitted via issues are considered invalid.

Considering the current size of the Conflux community, it's not practical for community members to follow up with technically complex CIPs. For such CIPs, the main discussions are held within the dev team, and the outcomes are promptly updated in the CIP documents. For CIPs that may have a significant impact, triggering large-scale discussions, you should start a topic in the GitHub issue or Conflux forum for more in-depth discussions. These CIPs must include a Discussion header with a link to a discussion forum or open GitHub issue where the CIP can be discussed as a whole.

If your CIP requires images, the image files should be included in a subdirectory of the assets folder for that CIP as follows: assets/CIP-N (where N is to be replaced with the CIP number). When linking to an image in the CIP, use relative links such as ../assets/CIP-1/image.png.

If your CIP depends on other CIPs that haven't been activated on the mainnet, include a "Required CIPs" field in the header. You don't need to list prerequisites that have been activated on the mainnet.

To facilitate communication, you can provide multilingual versions for CIP, such as CIP-109. However, an English version is essential. In case of discrepancies between different language versions, the English one will serve as the definitive reference.

Once your first PR is merged, we have a bot that helps out by automatically merging PRs to draft CIPs. For this to work, it has to be able to tell that you own the draft being edited. Make sure that the 'author' line of your CIP contains either your GitHub username or your email address inside. If you use your email address, that address must be the one publicly shown on your GitHub profile.

When you believe your CIP is mature and ready to progress past the draft phase, you should ask to have your issue added to the agenda of an upcoming All Core Devs meeting, where it can be discussed for inclusion in a future hard fork. If implementers agree to include it, the CIP editors will update the state of your CIP to Accepted.

CIP Status Terms

  • Draft - a CIP that is undergoing rapid iteration and changes.
  • Last Call - a CIP that is done with its initial iteration and ready for review by a wide audience.
  • Accepted - a CIP that has been in Last Call for at least 2 weeks and any technical changes that were requested have been addressed by the author. The process for Core Devs to decide whether to encode a CIP into their clients as part of a hard fork is not part of the CIP process. If such a decision is made, the CIP will move to Final.
  • Final - a CIP that the Core Devs have decided to implement and release in a future hard fork or has already been released in a hard fork.

CIP List

Highlighted CIPs

These CIPs significantly influence the economic and governance models of Conflux, as well as its various features.

CIP Number Title
37 Introduce Base32 Checksum Addresses
40 Reduce Block Base Reward to 2 CFX
43 Introduce Finality Through Staking Vote
90 Introduce a Fully EVM-Compatible Space
94 On-Chain DAO Vote for Chain Parameters
107 DAO-Adjustable Burn of Storage Collateral

Spec Breaking CIPs

Ongoing

These CIPs are either in the midst of active development or have been fully developed, currently awaiting discussions on upgrade plans.

CIP Number Title Status
130 Aligning Gas Limit with Transaction Size Draft
131 Retain Whitelist on Contract Deletion Draft
132 Fix Static Context Check for Internal Contracts Draft
133 Enhanced Block Hash Query Draft

Activated

These CIPs have successfully undergone upgrades on the mainnet.

CIP Number Title Activation Hardfork
3 Octopus Proof-of-Work Mining Algorithm Tethys (V1.0)
5 Fix MPT Key Encoding Corner Case Tethys (V1.0)
8 Delay Code Collateral Settlement Tethys (V1.0)
10 Mining Reward Finalization Tethys (V1.0)
12 Allow Non-Existent Sponsor for Collateral Tethys (V1.0)
13 Employ Big-Endian MPT Keys Tethys (V1.0)
16 Consolidate Contract Destruction Logic Tethys (V1.0)
21 Minimum Storage Commitment Per Epoch Tethys (V1.0)
22 Add Interfaces for Internal Contracts Tethys (V1.0)
26 Use Pivot Block Timestamp for Opcode TIMESTAMP Tethys (V1.0)
27 Delete Whitelist Keys at Contract Removal Tethys (V1.0)
31 Genesis Block Contract: Create2Factory Tethys (V1.0)
39 Use Custom Field for Incompatible Upgrade Tanzanite (V1.1)
40 Reduce Block Base Reward to 2 CFX Tanzanite (V1.1)
43 Introduce Finality Through Staking Vote Hydra (V2.0)
62 Enable EC-Related Builtin Contracts Hydra (V2.0)
64 Get Current Epoch Number via Internal Contract Hydra (V2.0)
71 Disable Anti-Reentrancy Hydra (V2.0)
76 Remove VM-Related Constraints in Syncing Blocks Hydra (V2.0)
78 Correct is_sponsored Fields in Receipt Hydra (V2.0)
86 Update Difficulty Adjustment Algorithm Hydra (V2.0)
90 Introduce a Fully EVM-Compatible Space Hydra (V2.0)
92 Enable Blake2F Builtin Function Hydra (V2.0)
94 On-Chain DAO Vote for Chain Parameters V2.1
97 Clear Staking Lists V2.1
98 Fix BLOCKHASH Opcode Bug in eSpace V2.1
99 Extend Non-Voting Grace and Shorten Unlock Time V2.1
105 Minimal DAO Vote Count Based on PoS Staking V2.1
107 DAO-Adjustable Burn of Storage Collateral V2.3
112 Fix Block Headers custom Field Serde V2.3
113 Accelerate Up PoS Finalization V2.3
118 Query Unused Storage Points in Internal Contract V2.3
119 PUSH0 (0x5f) Instruction V2.3

Dormancy

These CIPs have been dormant, lacking recent discussions or follow-ups.

CIP Number Title
28 Include Block Number in Contract Address Calculation
33 Transaction Fee Pricing Mechanism for Tephys
34 Contract-Friendly Verification Rules
42 Support Event-Driven Execution Model
44 Introduce a VDF Verification Builtin
45 Introduce Flexible Account Authorization
51 Support SM-2/3 Verification in Internal Contracts
52 Custom Eligibility Rules for Sponsorship
102 Change PoW Mining Algorithm
104 Create EVM-Compatible Space with Ethereum State

Replaced

These CIPs have been replaced by other CIPs.

CIP Number Title Replaced By
2 Prohibit Storage Owner Destruction in Sub-Call 12
72 Support Ethereum-Type Transactions 90
80 Align Conflux and Ethereum Address Generation Rules 90

Database / RPC Breaking CIPs

These CIPs, while not requiring hard fork upgrades, could potentially impact the database or RPC.

CIP Number Title Status
4 Add Node Type in Status Message Activated
11 Distinguish Status and Heartbeat Messages Activated
37 Introduce Base32 Checksum Addresses Activated
60 Log VM Errors in Tracer Activated

Application-level CIPs

These CIPs establish standards at the application layer, thereby not involving upgrades to the Conflux nodes.

CIP Number Title
19 KeyValue EventLog Standard
23 Hashing and Signing Typed Structured Data
46 Introduce Conflux Domain Name Service
109 RPC API for Wallet Provider
1820 Migrate ERC1820 to Conflux

About

Conflux Improvement Proposals (CIPs)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published