NEO Enhancement Proposal (NEP)
A NEO Enhancement Proposal (NEP) is a design document created to provide the NEO community with information that describes a newly proposed feature for NEO, its processes or environment. Each NEP contains a technical specification of the proposed feature, along with a rationale for the implementation. NEPs are used to define new standards for the NEO platform, including core protocol specifications, client APIs and contract standards.
- NEP-1: NEP Purpose and Guidelines
- NEP-2: Passphrase-protected private key
- NEP-3: NeoContract ABI
- NEP-4: Dynamic Contract Invocation
- NEP-5: Token Standard
- NEP-6: Wallet Standard
- NEP-7: Triggers for NeoContract
- NEP-8: Stack Isolation for NeoVM
- NEP-9: URI Scheme
- NEP-10: Composite Smart Contracts
NEO Enhancement Proposals are split into three types:
- Standards Track - Any proposal that describes a change that will affect most or all NEO implementations. These include changes to the network protocol, block or transaction validity rules and proposed application standards.
- Informational - A proposal that outlines a NEO design issue or provides other information for the NEO community, but does not propose a new feature itself.
- Meta - Like a Standards Track NEP, which proposes a change or process, however the change or implementation is not directly applied to the NEO protocol itself. Instead, they focus on other areas of the ecosystem.
To maintain a decentralized development process, Standards Track and Meta NEPs require community consensus before they can be finalized. Informational NEPs however do not necessarily represent community consensus as they instead offer guidelines or other information. Users and implementers are therefore free to ignore Informational NEPs or follow the advice at their own digression.
NEP Acceptance Criteria
For a NEP to be accepted, it must meet certain criteria. Firstly, a concise description of the proposed enhancement must be provided. Secondly, the enhancement must represent a net improvement to NEO. Thirdly, the proposed implementation must be solid and not unnecessarily complicate the protocol.
Each NEP also has a status:
- Draft - The initial status applied to new proposals.
- Accepted - The proposal is accepted by community consensus.
- Final - The implementation is complete.
- Active - An implementation that is never meant to be completed, such as certain Informational or Meta NEPs.
- Deferred - Assigned to a NEP by an author or editor when no progress is being made. It may be re-assigned to draft status.
- Superseded - A finalized NEP that has been replaced by a more recent proposal.
- Rejected - Assigned to proposals that do not pass community consensus.
- Withdrawn - The proposal has been revoked by the author.