From 67bc2d1a8ab7723fd57a153bfdd44be457339df1 Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Tue, 24 Feb 2026 14:46:10 +0400 Subject: [PATCH 01/10] feat: introduce MIP-1 on MIP purpose and guidelines --- LICENSE.md | 121 ++++++++++++++++++ MIPS/MIP-1.md | 322 ++++++++++++++++++++++++++++++++++++++++++++++++ mip-template.md | 130 +++++++++++++++++++ 3 files changed, 573 insertions(+) create mode 100644 LICENSE.md create mode 100644 MIPS/MIP-1.md create mode 100644 mip-template.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md new file mode 100644 index 0000000..b5c3bfb --- /dev/null +++ b/MIPS/MIP-1.md @@ -0,0 +1,322 @@ +--- +mip: 1 +title: MIP Purpose and Guidelines +description: Guidelines and procedures for the Monad Improvement Proposal process +author: QEDK (@qedk) +discussions-to: https://forum.monad.xyz/t/mip-1-mip-purpose-and-guidelines +status: Draft +type: Meta +created: 2026-02-24 +--- + +## What is a MIP? + +MIP stands for Monad Improvement Proposal. A MIP is a design document providing information to the Monad community, or describing a new feature for Monad or its processes or environment. The MIP should provide a concise technical specification of the feature and a rationale for the feature. The MIP author is responsible for building consensus within the community and documenting dissenting opinions. + +## MIP Rationale + +MIPs are the primary mechanism for proposing new features, for collecting community technical input on an issue, and for documenting the design decisions that have gone into Monad. Because MIPs are maintained as text files in a versioned repository, their revision history is the historical record of the feature proposal. + +For Monad implementers, MIPs are a convenient way to track the progress of their implementation. Ideally, each implementation maintainer would list the MIPs that they have implemented. This will give end users a convenient way to know the current status of a given implementation or library. + +## MIP Types + +There are three types of MIP: + +- A **Standards Track MIP** describes any change that affects most or all Monad implementations, such as: a change to the network protocol, a change in block or transaction validity rules, proposed application standards or conventions, or any change or addition that affects the interoperability of applications using Monad. Standards Track MIPs consist of a design document and, where applicable, a reference implementation. Furthermore, Standards Track MIPs can be broken down into the following categories: + + - **Core**: improvements requiring a consensus fork or changes to the execution or consensus layer that affect the protocol's behavior. This includes changes to block validity rules, transaction processing, EVM extensions, MonadBFT consensus parameters, and other modifications relevant to core protocol development. Core MIPs also encompass changes that are not necessarily consensus-critical but may be relevant to core protocol discussions (for example, validator strategy changes or execution pipeline modifications). + + - **Networking**: includes improvements to the peer-to-peer networking layer, block propagation mechanisms (such as RaptorCast), transaction dissemination, and other network protocol specifications. + + - **Interface**: includes improvements around client-level standards like JSON-RPC method names, contract ABIs, and other interface conventions shared between the execution and consensus components. + + - **MRC**: application-level standards and conventions, including contract standards such as token standards, name registries, URI schemes, library or package formats, and wallet formats. MRC stands for Monad Request for Comments. + +- A **Meta MIP** describes a process surrounding Monad or proposes a change to (or an event in) a process. Meta MIPs are like Standards Track MIPs but apply to areas other than the Monad protocol itself. They may propose an implementation, but not to Monad's codebase; they often require community consensus; unlike Informational MIPs, they are more than recommendations, and users are typically not free to ignore them. Examples include procedures, guidelines, changes to the decision-making process, changes to the tools or environment used in Monad development, and specifications for named network upgrades. Any Meta MIP is also considered a Process MIP. + +- An **Informational MIP** describes a Monad design issue, or provides general guidelines or information to the Monad community, but does not propose a new feature. Informational MIPs do not necessarily represent Monad community consensus or a recommendation, so users and implementers are free to ignore Informational MIPs or follow their advice. + +It is highly recommended that a single MIP contain a single key proposal or new idea. The more focused the MIP, the more successful it tends to be. + +A MIP must meet certain minimum criteria. It must be a clear and complete description of the proposed enhancement. The enhancement must represent a net improvement. The proposed implementation, if applicable, must be solid and must not complicate the protocol unduly. + +### Special Requirements for Core MIPs + +If a **Core** MIP mentions or proposes changes to the EVM (Ethereum Virtual Machine) or Monad-specific EVM extensions, it should refer to instructions by their mnemonics and define the opcodes of those mnemonics at least once. A preferred way is the following: + +``` +REVERT (0xfd) +``` + +Because Monad's execution and consensus layers are maintained as separate components, Core MIPs SHOULD clearly indicate which component(s) are affected: the execution daemon, the consensus daemon, or both. + +### Network Upgrade Meta MIPs + +Named network upgrades on Monad (such as `MONAD_NINE`) MUST be specified by a Meta MIP. The network upgrade Meta MIP MUST list all included Standards Track MIPs and specify the activation timestamps for each network (Monad Testnet, Monad Mainnet). The network upgrade Meta MIP MUST use `requires` to reference all included MIPs. + +## MIP Work Flow + +### Shepherding a MIP + +Parties involved in the process are you, the champion or *MIP author*, the [*MIP editors*](#mip-editors), and the *Monad Core Developers*. + +Before you begin writing a formal MIP, you should vet your idea. Ask the Monad community first if an idea is original to avoid wasting time on something that will be rejected based on prior research. It is thus recommended to open a discussion thread on the Monad community forum to do this. + +Once the idea has been vetted, your next responsibility will be to present (by means of a MIP) the idea to the reviewers and all interested parties, invite editors, developers, and the community to give feedback on the aforementioned channels. You should try and gauge whether the interest in your MIP is commensurate with both the work involved in implementing it and how many parties will have to conform to it. For example, the work required for implementing a Core MIP will be much greater than for an MRC and the MIP will need sufficient interest from the Monad client team. Negative community feedback will be taken into consideration and may prevent your MIP from moving past the Draft stage. + +### Core MIPs + +For Core MIPs, given that they require client implementations to be considered **Final** (see "MIP Process" below), you will need to either provide an implementation for clients or convince the client team to implement your MIP. + +Because Monad uses a two-daemon architecture (a consensus daemon and an execution daemon), Core MIPs may require changes to one or both components. Authors SHOULD coordinate with the relevant teams accordingly. + +The best way to get client implementers to review your MIP is to present it on a Core Developers call. These calls serve as a way for client implementers to do three things. First, to discuss the technical merits of MIPs. Second, to gauge what will be implemented. Third, to coordinate MIP implementation for network upgrades. + +These calls generally result in a "rough consensus" around what MIPs should be implemented. This "rough consensus" rests on the assumptions that MIPs are not contentious enough to cause a network split and that they are technically sound. + +*In short, your role as the champion is to write the MIP using the style and format described below, shepherd the discussions in the appropriate forums, and build community consensus around the idea.* + +### MIP Process + +The following is the standardization process for all MIPs in all tracks: + +**Idea** - An idea that is pre-draft. This is not tracked within the MIP Repository. + +**Draft** - The first formally tracked stage of a MIP in development. A MIP is merged by a MIP Editor into the MIP repository when properly formatted. + +**Review** - A MIP Author marks a MIP as ready for and requesting Peer Review. + +**Last Call** - This is the final review window for a MIP before it is moved to `Final`. A MIP enters `Last Call` when the specification is stable and the author opens a PR with a review end date (`last-call-deadline`), typically 14 days later. If this period results in necessary normative changes, the MIP will revert to `Review`. + +**Final** - This MIP represents the final standard. A Final MIP exists in a state of finality and should only be updated to correct errata and add non-normative clarifications. A PR moving a MIP from Last Call to Final SHOULD contain no changes other than the status update. Any content or editorial proposed change SHOULD be separate from this status-updating PR and committed prior to it. + +**Stagnant** - Any MIP in `Draft` or `Review` or `Last Call` if inactive for a period of 3 months or greater is moved to `Stagnant`. A MIP may be resurrected from this state by Authors or MIP Editors through moving it back to `Draft` or its earlier status. If not resurrected, a proposal may stay forever in this status. + +>*MIP Authors are notified of any algorithmic change to the status of their MIP* + +**Withdrawn** - The MIP Author(s) have withdrawn the proposed MIP. This state has finality and can no longer be resurrected using this MIP number. If the idea is pursued at a later date, it is considered a new proposal. + +**Living** - A special status for MIPs that are designed to be continually updated and not reach a state of finality. This includes most notably MIP-1. + +## What Belongs in a Successful MIP? + +Each MIP should have the following parts: + +- **Preamble** - RFC 822 style headers containing metadata about the MIP, including the MIP number, a short descriptive title (limited to a maximum of 44 characters), a description (limited to a maximum of 140 characters), and the author details. Irrespective of the category, the title and description should not include the MIP number. See [below](#mip-header-preamble) for details. + +- **Abstract** - Abstract is a multi-sentence (short paragraph) technical summary. This should be a very terse and human-readable version of the specification section. Someone should be able to read only the abstract to get the gist of what this specification does. + +- **Motivation** *(optional)* - A motivation section is critical for MIPs that want to change the Monad protocol. It should clearly explain why the existing protocol specification is inadequate to address the problem that the MIP solves. This section may be omitted if the motivation is evident. + +- **Specification** - The technical specification should describe the syntax and semantics of any new feature. The specification should be detailed enough to allow competing, interoperable implementations for any of the current Monad platform components (execution, consensus, or others). + +- **Rationale** - The rationale fleshes out the specification by describing what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work, e.g. how the feature is supported in other chains or prior art from Ethereum EIPs. The rationale should discuss important objections or concerns raised during discussion around the MIP. + +- **Backwards Compatibility** *(optional)* - All MIPs that introduce backwards incompatibilities must include a section describing these incompatibilities and their consequences. The MIP must explain how the author proposes to deal with these incompatibilities. This section may be omitted if the proposal does not introduce any backward incompatibilities, but this section must be included if backward incompatibilities exist. + +- **Test Cases** *(optional)* - Test cases for an implementation are mandatory for MIPs that are affecting consensus changes. Tests should either be inlined in the MIP as data (such as input/expected output pairs) or included in `../assets/mip-###/`. This section may be omitted for non-Core proposals. + +- **Reference Implementation** *(optional)* - An optional section that contains a reference or example implementation that people can use to assist in understanding or implementing this specification. This section may be omitted for all MIPs. + +- **Security Considerations** - All MIPs must contain a section that discusses the security implications and considerations relevant to the proposed change. Include information that might be important for security discussions, surfaces risks, and can be used throughout the life-cycle of the proposal. E.g., include security-relevant design decisions, concerns, important discussions, implementation-specific guidance and pitfalls, an outline of threats and risks and how they are being addressed. MIP submissions missing the "Security Considerations" section will be rejected. A MIP cannot proceed to status "Final" without a Security Considerations discussion deemed sufficient by the reviewers. + +- **Copyright Waiver** - All MIPs must be in the public domain. The copyright waiver MUST link to the license file and use the following wording: `Copyright and related rights waived via [CC0](../LICENSE.md).` + +## MIP Formats and Templates + +MIPs should be written in [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) format. There is a [template](https://github.com/monad-crypto/MIPs/blob/main/mip-template.md) to follow. + +## MIP Header Preamble + +Each MIP must begin with an [RFC 822](https://www.ietf.org/rfc/rfc822.txt) style header preamble, preceded and followed by three hyphens (`---`). This header is also termed "front matter" by Jekyll. The headers must appear in the following order. + +`mip`: *MIP number* + +`title`: *The MIP title is a few words, not a complete sentence* + +`description`: *Description is one full (short) sentence* + +`author`: *The list of the author's or authors' name(s) and/or username(s), or name(s) and email(s). Details are below.* + +`discussions-to`: *The URL pointing to the official discussion thread* + +`status`: *Draft, Review, Last Call, Final, Stagnant, Withdrawn, Living* + +`last-call-deadline`: *The date last call period ends on* (Optional field, only needed when status is `Last Call`) + +`type`: *One of `Standards Track`, `Meta`, or `Informational`* + +`category`: *One of `Core`, `Networking`, `Interface`, or `MRC`* (Optional field, only needed for `Standards Track` MIPs) + +`created`: *Date the MIP was created on* + +`requires`: *MIP number(s)* (Optional field) + +`withdrawal-reason`: *A sentence explaining why the MIP was withdrawn.* (Optional field, only needed when status is `Withdrawn`) + +Headers that permit lists must separate elements with commas. + +Headers requiring dates will always do so in the format of ISO 8601 (yyyy-mm-dd). + +### `author` Header + +The `author` header lists the names, email addresses or usernames of the authors/owners of the MIP. Those who prefer anonymity may use a username only, or a first name and a username. The format of the `author` header value must be: + +> Random J. User <address@dom.ain> + +or + +> Random J. User (@username) + +or + +> Random J. User (@username) <address@dom.ain> + +if the email address and/or GitHub username is included, and + +> Random J. User + +if neither the email address nor the GitHub username are given. + +At least one author must use a GitHub username, in order to get notified on change requests and have the capability to approve or reject them. + +### `discussions-to` Header + +While a MIP is a draft, a `discussions-to` header will indicate the URL where the MIP is being discussed. + +The preferred discussion URL is a topic on the Monad community forum. The URL cannot point to GitHub pull requests, any URL which is ephemeral, and any URL which can get locked over time (i.e. Reddit topics). + +### `type` Header + +The `type` header specifies the type of MIP: Standards Track, Meta, or Informational. If the track is Standards, please include the subcategory (Core, Networking, Interface, or MRC). + +### `category` Header + +The `category` header specifies the MIP's category. This is required for Standards Track MIPs only. + +### `created` Header + +The `created` header records the date that the MIP was assigned a number. The header should be in yyyy-mm-dd format, e.g. 2025-11-24. + +### `requires` Header + +MIPs may have a `requires` header, indicating the MIP numbers that this MIP depends on. If such a dependency exists, this field is required. + +A `requires` dependency is created when the current MIP cannot be understood or implemented without a concept or technical element from another MIP. Merely mentioning another MIP does not necessarily create such a dependency. + +## Linking to External Resources + +Other than the specific exceptions listed below, links to external resources **SHOULD NOT** be included. External resources may disappear, move, or change unexpectedly. + +### Permitted External Resources + +The following external resources may be linked: + +- **MonadBFT Specification**: Links to the [MonadBFT specification](https://doi.org/10.48550/arXiv.2502.20692) may be included using normal Markdown syntax, but MUST anchor to a specific version. + +- **Ethereum Yellow Paper**: Links to the [Ethereum Yellow Paper](https://github.com/ethereum/yellowpaper/blob/efc5f9a1f356cba376c978eedb63cb0363c2aa85/Paper.tex) may be included using normal Markdown syntax, but MUST anchor to a specific commit. + +- **Monad Execution Specifications**: Links to the [Monad execution specifications](https://github.com/monad-developers/execution-specs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. + +- **Monad Execution Specification Tests**: Links to the [Monad execution specification tests](https://github.com/monad-developers/execution-spec-tests) may be included using normal Markdown syntax, but MUST anchor to a specific commit. + +- **Ethereum Execution Client Specifications**: Links to the [Ethereum Execution Client Specifications](https://github.com/ethereum/execution-specs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. + +- **Ethereum Execution Specification Tests**: Links to the [Ethereum Execution Specification Tests](https://github.com/ethereum/execution-spec-tests) may be included using normal Markdown syntax, but MUST anchor to a specific commit. + +- **Internet Engineering Task Force (IETF)**: Links to an IETF Request For Comment (RFC) specification may be included using normal Markdown syntax. Permitted URLs MUST anchor to a specification with an assigned RFC number. + +- **Ethereum Improvement Proposals (EIPs)**: Links to [EIPs](https://github.com/ethereum/EIPs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. + +- **Bitcoin Improvement Proposals (BIPs)**: Links to [BIPs](https://github.com/bitcoin/bips) may be included using normal Markdown syntax, but MUST anchor to a specific commit. + +- **Chain Agnostic Improvement Proposals (CAIPs)**: Links to [CAIPs](https://github.com/ChainAgnostic/CAIPs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. + +- **World Wide Web Consortium (W3C)**: Links to a W3C "Recommendation" status specification may be included using normal Markdown syntax. Permitted URLs MUST anchor to a specification in the technical reports namespace with a date. + +- **Digital Object Identifier System (DOI)**: Links qualified with a Digital Object Identifier (DOI) may be included. The top-level URL field must resolve to a copy of the referenced work that is freely accessible to the public. + +## Linking to Other MIPs + +References to other MIPs should follow the format `MIP-N` where `N` is the MIP number you are referring to. Each MIP that is referenced in a MIP **MUST** be accompanied by a relative markdown link the first time it is referenced, and **MAY** be accompanied by a link on subsequent references. The link **MUST** always be done via relative paths so that the links work in this GitHub repository, forks of this repository, and mirrors. For example, you would link to this MIP as `./MIP-1.md`. + +When referring to a MIP with a `category` of `MRC`, it must be written in the hyphenated form `MRC-X` where `X` is that MIP's assigned number. When referring to MIPs with any other `category`, it must be written in the hyphenated form `MIP-X` where `X` is that MIP's assigned number. + +## Auxiliary Files + +Images, diagrams and auxiliary files should be included in a subdirectory of the `assets` folder for that MIP as follows: `assets/MIP-N` (where **N** is to be replaced with the MIP number). When linking to an image in the MIP, use relative links such as `../assets/MIP-1/image.png`. Prefer SVG diagrams, then PNG, and finally everything else. + +## Transferring MIP Ownership + +It occasionally becomes necessary to transfer ownership of MIPs to a new champion. In general, we'd like to retain the original author as a co-author of the transferred MIP, but that's really up to the original author. A good reason to transfer ownership is because the original author no longer has the time or interest in updating it or following through with the MIP process, or is unreachable. A bad reason to transfer ownership is because you don't agree with the direction of the MIP. We try to build consensus around a MIP, but if that's not possible, you can always submit a competing MIP. + +If you are interested in assuming ownership of a MIP, send a message asking to take over, addressed to both the original author and the MIP editor. If the original author doesn't respond in a timely manner, the MIP editor will make a unilateral decision. + +## MIP Editors + +The current MIP editors are: + +*To be determined.* + +## MIP Editor Responsibilities + +For each new MIP that comes in, an editor does the following: + +- Read the MIP to check if it is ready: sound and complete. The ideas must make technical sense, even if they don't seem likely to get to final status. +- The title should accurately describe the content. +- Check the MIP for language (spelling, grammar, sentence structure, etc.), markup (GitHub-flavored Markdown), and code style. + +If the MIP isn't ready, the editor will send it back to the author for revision, with specific instructions. + +Once the MIP is ready for the repository, the MIP editor will: + +- Assign a MIP number (generally incremental; editors can reassign if number sniping is suspected). +- Merge the corresponding [pull request](https://github.com/monad-crypto/MIPs/pulls). +- Send a message back to the MIP author with the next step. + +The editors don't pass judgment on MIPs. They merely do the administrative and editorial part. + +## Style Guide + +### Titles + +The `title` field in the preamble: + +- Should be in title case. +- Should not include the word "standard" or any variation thereof; and +- Should not include the MIP's number. + +### Descriptions + +The `description` field in the preamble: + +- Should be in sentence case. +- Should not include the word "standard" or any variation thereof; and +- Should not include the MIP's number. + +### MIP Numbers + +When referring to a MIP with a `category` of `MRC`, it must be written in the hyphenated form `MRC-X` where `X` is that MIP's assigned number. When referring to MIPs with any other `category`, it must be written in the hyphenated form `MIP-X` where `X` is that MIP's assigned number. + +### RFC 2119 and RFC 8174 + +MIPs are encouraged to follow [RFC 2119](https://www.ietf.org/rfc/rfc2119.html) and [RFC 8174](https://www.ietf.org/rfc/rfc8174.html) for terminology and to insert the following at the beginning of the Specification section: + +> The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174. + +Do not use RFC 2119 keywords (all-caps SHOULD/MUST/etc.) outside of the Specification section. + +## Relationship to Ethereum EIPs + +Monad is EVM-compatible and shares substantial heritage with the Ethereum protocol. Where Monad adopts an Ethereum feature without modification, a MIP MAY reference the corresponding EIP directly rather than duplicating its specification in full. Where Monad diverges from Ethereum behavior or introduces Monad-specific extensions, a standalone MIP MUST be written to document the differences. + +Network upgrades that activate a bundle of upstream Ethereum EIPs (such as EIPs from an Ethereum hard fork like Fusaka) SHOULD be tracked as a single Standards Track MIP specifying which EIPs are activated and any Monad-specific modifications, and then included in the corresponding network upgrade Meta MIP. + +## History + +This document was derived heavily from [Ethereum's EIP-1](https://eips.ethereum.org/EIPS/eip-1) written by Martin Becze, Hudson Jameson, et al., which in turn was derived from [Bitcoin's BIP-0001](https://github.com/bitcoin/bips) written by Amir Taaki, which in turn was derived from [Python's PEP-0001](https://peps.python.org/). In many places text was simply copied and modified. The authors of those documents are not responsible for its use in the Monad Improvement Process, and should not be bothered with technical questions specific to Monad or the MIP process. Please direct all comments to the MIP editors. + +## Copyright + +Copyright and related rights waived via [CC0](../LICENSE.md). diff --git a/mip-template.md b/mip-template.md new file mode 100644 index 0000000..4ba8646 --- /dev/null +++ b/mip-template.md @@ -0,0 +1,130 @@ +--- +title: +description: +author: , FirstName (@GitHubUsername) and GitHubUsername (@GitHubUsername)> +discussions-to: +status: Draft +type: +category: # Only required for Standards Track. Otherwise, remove this field. +created: +requires: # Only required when you reference an MIP in the `Specification` section. Otherwise, remove this field. +--- + + + +## Abstract + + + +## Motivation + + + +## Specification + + + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119) and [RFC 8174](https://www.rfc-editor.org/rfc/rfc8174). + +### Chain Specifics + + + +## Rationale + + + +TBD + +## Backwards Compatibility + + + +No backward compatibility issues found. + +## Test Cases + + + +## Reference Implementation + + + +## Security Considerations + + + +Needs discussion. + +## Copyright + +Copyright and related rights waived via [CC0](../LICENSE.md). From c2019d14907d23db98a59f081ccaeac8366b4adf Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Tue, 24 Feb 2026 15:29:22 +0400 Subject: [PATCH 02/10] fix: fix minor inconsistencies --- MIPS/MIP-1.md | 4 ++-- mip-template.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md index b5c3bfb..805dc8a 100644 --- a/MIPS/MIP-1.md +++ b/MIPS/MIP-1.md @@ -115,7 +115,7 @@ Each MIP should have the following parts: - **Backwards Compatibility** *(optional)* - All MIPs that introduce backwards incompatibilities must include a section describing these incompatibilities and their consequences. The MIP must explain how the author proposes to deal with these incompatibilities. This section may be omitted if the proposal does not introduce any backward incompatibilities, but this section must be included if backward incompatibilities exist. -- **Test Cases** *(optional)* - Test cases for an implementation are mandatory for MIPs that are affecting consensus changes. Tests should either be inlined in the MIP as data (such as input/expected output pairs) or included in `../assets/mip-###/`. This section may be omitted for non-Core proposals. +- **Test Cases** *(optional)* - Test cases for an implementation are mandatory for MIPs that are affecting consensus changes. Tests should either be inlined in the MIP as data (such as input/expected output pairs) or included in `../assets/MIP-###/`. This section may be omitted for non-Core proposals. - **Reference Implementation** *(optional)* - An optional section that contains a reference or example implementation that people can use to assist in understanding or implementing this specification. This section may be omitted for all MIPs. @@ -129,7 +129,7 @@ MIPs should be written in [Markdown](https://github.com/adam-p/markdown-here/wik ## MIP Header Preamble -Each MIP must begin with an [RFC 822](https://www.ietf.org/rfc/rfc822.txt) style header preamble, preceded and followed by three hyphens (`---`). This header is also termed "front matter" by Jekyll. The headers must appear in the following order. +Each MIP must begin with an [RFC 822](https://www.ietf.org/rfc/rfc822.html) style header preamble, preceded and followed by three hyphens (`---`). This header is also termed "front matter" by Jekyll. The headers must appear in the following order. `mip`: *MIP number* diff --git a/mip-template.md b/mip-template.md index 4ba8646..e94a05d 100644 --- a/mip-template.md +++ b/mip-template.md @@ -7,7 +7,7 @@ status: Draft type: category: # Only required for Standards Track. Otherwise, remove this field. created: -requires: # Only required when you reference an MIP in the `Specification` section. Otherwise, remove this field. +requires: # Only required when this MIP cannot be understood or implemented without concepts or technical elements from another MIP. Otherwise, remove this field. --- -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119) and [RFC 8174](https://www.rfc-editor.org/rfc/rfc8174). +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.html) and [RFC 8174](https://www.ietf.org/rfc/rfc8174.html). ### Chain Specifics From c5c5ce81901206bc57cd44a6ad399c067b875fee Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Tue, 24 Feb 2026 16:13:08 +0400 Subject: [PATCH 03/10] fix: remove some permitted resources --- MIPS/MIP-1.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md index 805dc8a..717392a 100644 --- a/MIPS/MIP-1.md +++ b/MIPS/MIP-1.md @@ -217,14 +217,10 @@ The following external resources may be linked: - **Ethereum Yellow Paper**: Links to the [Ethereum Yellow Paper](https://github.com/ethereum/yellowpaper/blob/efc5f9a1f356cba376c978eedb63cb0363c2aa85/Paper.tex) may be included using normal Markdown syntax, but MUST anchor to a specific commit. -- **Monad Execution Specifications**: Links to the [Monad execution specifications](https://github.com/monad-developers/execution-specs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. - -- **Monad Execution Specification Tests**: Links to the [Monad execution specification tests](https://github.com/monad-developers/execution-spec-tests) may be included using normal Markdown syntax, but MUST anchor to a specific commit. +- **Monad Execution Specification Tests**: Links to the [Monad execution specification tests](https://github.com/monad-developers/execution-spec-tests) may be included using normal Markdown syntax, but MUST anchor to a specific release commit. - **Ethereum Execution Client Specifications**: Links to the [Ethereum Execution Client Specifications](https://github.com/ethereum/execution-specs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. -- **Ethereum Execution Specification Tests**: Links to the [Ethereum Execution Specification Tests](https://github.com/ethereum/execution-spec-tests) may be included using normal Markdown syntax, but MUST anchor to a specific commit. - - **Internet Engineering Task Force (IETF)**: Links to an IETF Request For Comment (RFC) specification may be included using normal Markdown syntax. Permitted URLs MUST anchor to a specification with an assigned RFC number. - **Ethereum Improvement Proposals (EIPs)**: Links to [EIPs](https://github.com/ethereum/EIPs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. From c7e8dc9195c959ce351f1c2150524fbecfd907eb Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Tue, 24 Feb 2026 16:15:13 +0400 Subject: [PATCH 04/10] feat: add 2 editors --- MIPS/MIP-1.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md index 717392a..733b2c5 100644 --- a/MIPS/MIP-1.md +++ b/MIPS/MIP-1.md @@ -253,7 +253,8 @@ If you are interested in assuming ownership of a MIP, send a message asking to t The current MIP editors are: -*To be determined.* +* Piotr Dobaczewski (@pdobacz) +* QEDK (@qedk) ## MIP Editor Responsibilities From b68ff4e8b6f1d2f50a45aa607b4b820a19f9b8c3 Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Tue, 24 Feb 2026 16:36:50 +0400 Subject: [PATCH 05/10] feat: add MIP process image --- .gitattributes | 7 +++++++ .gitignore | 7 +++++++ MIPS/MIP-1.md | 2 ++ assets/MIP-1/process.jpg | Bin 0 -> 80466 bytes 4 files changed, 16 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 assets/MIP-1/process.jpg diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..a9a9d1e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,7 @@ +# GitHub highlighting for Solidity files +# See https://github.com/github/linguist/pull/3973#issuecomment-357507741 +*.sol linguist-language=Solidity + +# Force Linux line endings on all files +# Necessary for running eipw locally +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d7acd05 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# Editor files +.gitpod.yml +.DS_Store +/.idea + +# Secrets +.vercel diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md index 733b2c5..2ccc115 100644 --- a/MIPS/MIP-1.md +++ b/MIPS/MIP-1.md @@ -81,6 +81,8 @@ These calls generally result in a "rough consensus" around what MIPs should be i The following is the standardization process for all MIPs in all tracks: +![MIP Status Diagram](../assets/MIP-1/process.jpg) + **Idea** - An idea that is pre-draft. This is not tracked within the MIP Repository. **Draft** - The first formally tracked stage of a MIP in development. A MIP is merged by a MIP Editor into the MIP repository when properly formatted. diff --git a/assets/MIP-1/process.jpg b/assets/MIP-1/process.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6bc35d31c08f06228acfdd9438a511f1bc6fbca0 GIT binary patch literal 80466 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 W`&%eO{{27xeeM6(X8`nl^gjSTU>0Wp literal 0 HcmV?d00001 From 204c6f9eecdcd7cec9738d71153faff964339d89 Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Tue, 24 Feb 2026 17:17:54 +0400 Subject: [PATCH 06/10] rm: rm monad execution tests from permitted external resources --- MIPS/MIP-1.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md index 2ccc115..eaea746 100644 --- a/MIPS/MIP-1.md +++ b/MIPS/MIP-1.md @@ -219,8 +219,6 @@ The following external resources may be linked: - **Ethereum Yellow Paper**: Links to the [Ethereum Yellow Paper](https://github.com/ethereum/yellowpaper/blob/efc5f9a1f356cba376c978eedb63cb0363c2aa85/Paper.tex) may be included using normal Markdown syntax, but MUST anchor to a specific commit. -- **Monad Execution Specification Tests**: Links to the [Monad execution specification tests](https://github.com/monad-developers/execution-spec-tests) may be included using normal Markdown syntax, but MUST anchor to a specific release commit. - - **Ethereum Execution Client Specifications**: Links to the [Ethereum Execution Client Specifications](https://github.com/ethereum/execution-specs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. - **Internet Engineering Task Force (IETF)**: Links to an IETF Request For Comment (RFC) specification may be included using normal Markdown syntax. Permitted URLs MUST anchor to a specification with an assigned RFC number. From 79b4066d49521874f41347656a65f3df2815b2e3 Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Thu, 26 Feb 2026 19:09:35 +0700 Subject: [PATCH 07/10] Modify MIP: add MIP Editors to MIP-1 (#12) * Add MIP: MIP Purpose and Guidelines (#10) * feat: introduce MIP-1 on MIP purpose and guidelines * fix: fix minor inconsistencies * fix: remove some permitted resources * feat: add 2 editors * feat: add MIP process image * rm: rm monad execution tests from permitted external resources * feat: add editors --- MIPS/MIP-1.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md index eaea746..49e0fcd 100644 --- a/MIPS/MIP-1.md +++ b/MIPS/MIP-1.md @@ -2,7 +2,7 @@ mip: 1 title: MIP Purpose and Guidelines description: Guidelines and procedures for the Monad Improvement Proposal process -author: QEDK (@qedk) +author: QEDK (@qedk) discussions-to: https://forum.monad.xyz/t/mip-1-mip-purpose-and-guidelines status: Draft type: Meta @@ -255,6 +255,8 @@ The current MIP editors are: * Piotr Dobaczewski (@pdobacz) * QEDK (@qedk) +* Bruce Collie (@Baltoli) +* Ken Camman (@kjcamann) ## MIP Editor Responsibilities From 6e7892736ed8fa7e42fb0962a249afe4f68cb254 Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Tue, 31 Mar 2026 20:15:21 +0530 Subject: [PATCH 08/10] feat: implement MIP-1 changes per review --- MIPS/MIP-1.md | 50 ++++++++++++++++++-------------------------------- 1 file changed, 18 insertions(+), 32 deletions(-) diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md index 49e0fcd..7912afe 100644 --- a/MIPS/MIP-1.md +++ b/MIPS/MIP-1.md @@ -24,17 +24,11 @@ For Monad implementers, MIPs are a convenient way to track the progress of their There are three types of MIP: - A **Standards Track MIP** describes any change that affects most or all Monad implementations, such as: a change to the network protocol, a change in block or transaction validity rules, proposed application standards or conventions, or any change or addition that affects the interoperability of applications using Monad. Standards Track MIPs consist of a design document and, where applicable, a reference implementation. Furthermore, Standards Track MIPs can be broken down into the following categories: - - - **Core**: improvements requiring a consensus fork or changes to the execution or consensus layer that affect the protocol's behavior. This includes changes to block validity rules, transaction processing, EVM extensions, MonadBFT consensus parameters, and other modifications relevant to core protocol development. Core MIPs also encompass changes that are not necessarily consensus-critical but may be relevant to core protocol discussions (for example, validator strategy changes or execution pipeline modifications). - - - **Networking**: includes improvements to the peer-to-peer networking layer, block propagation mechanisms (such as RaptorCast), transaction dissemination, and other network protocol specifications. - - - **Interface**: includes improvements around client-level standards like JSON-RPC method names, contract ABIs, and other interface conventions shared between the execution and consensus components. - - - **MRC**: application-level standards and conventions, including contract standards such as token standards, name registries, URI schemes, library or package formats, and wallet formats. MRC stands for Monad Request for Comments. - -- A **Meta MIP** describes a process surrounding Monad or proposes a change to (or an event in) a process. Meta MIPs are like Standards Track MIPs but apply to areas other than the Monad protocol itself. They may propose an implementation, but not to Monad's codebase; they often require community consensus; unlike Informational MIPs, they are more than recommendations, and users are typically not free to ignore them. Examples include procedures, guidelines, changes to the decision-making process, changes to the tools or environment used in Monad development, and specifications for named network upgrades. Any Meta MIP is also considered a Process MIP. - + - **Core**: improvements requiring a consensus fork or changes to the execution or consensus layer that affect the protocol’s behavior. This includes changes to block validity rules, transaction processing, EVM extensions, MonadBFT consensus parameters, and other modifications relevant to core protocol development. + - **Networking**: improvements to the peer-to-peer networking layer, block propagation mechanisms (such as RaptorCast), transaction dissemination, and other network protocol specifications. + - **Interface**: improvements around client-level standards like JSON-RPC method names, contract ABIs, and other interface conventions shared between the execution and consensus components. + - **MRC**: application-level standards and conventions, including contract standards such as token standards, name registries, URI schemes, library or package formats, and wallet formats. MRC stands for Monad Request for Comments. +- A **Meta MIP** describes a process surrounding Monad or proposes a change to (or an event in) a process. Meta MIPs are like Standards Track MIPs but apply to areas other than the Monad protocol itself. They may propose an implementation, but not to Monad’s codebase; they often require community consensus; unlike Informational MIPs, they are more than recommendations, and users are typically not free to ignore them. Examples include procedures, guidelines, changes to the decision-making process, changes to the tools or environment used in Monad development, and specifications for named network upgrades. Any Meta MIP is also considered a Process MIP. - An **Informational MIP** describes a Monad design issue, or provides general guidelines or information to the Monad community, but does not propose a new feature. Informational MIPs do not necessarily represent Monad community consensus or a recommendation, so users and implementers are free to ignore Informational MIPs or follow their advice. It is highly recommended that a single MIP contain a single key proposal or new idea. The more focused the MIP, the more successful it tends to be. @@ -49,7 +43,7 @@ If a **Core** MIP mentions or proposes changes to the EVM (Ethereum Virtual Mach REVERT (0xfd) ``` -Because Monad's execution and consensus layers are maintained as separate components, Core MIPs SHOULD clearly indicate which component(s) are affected: the execution daemon, the consensus daemon, or both. +Because Monad’s execution and consensus layers are maintained as separate components, Core MIPs SHOULD clearly indicate which component(s) are affected: the execution daemon, the consensus daemon, or both. ### Network Upgrade Meta MIPs @@ -67,13 +61,13 @@ Once the idea has been vetted, your next responsibility will be to present (by m ### Core MIPs -For Core MIPs, given that they require client implementations to be considered **Final** (see "MIP Process" below), you will need to either provide an implementation for clients or convince the client team to implement your MIP. +For Core MIPs, given that they require client implementations to be considered **Final** (see “MIP Process” below), you will need to either provide an implementation for clients or convince client teams to implement your MIP. Because Monad uses a two-daemon architecture (a consensus daemon and an execution daemon), Core MIPs may require changes to one or both components. Authors SHOULD coordinate with the relevant teams accordingly. -The best way to get client implementers to review your MIP is to present it on a Core Developers call. These calls serve as a way for client implementers to do three things. First, to discuss the technical merits of MIPs. Second, to gauge what will be implemented. Third, to coordinate MIP implementation for network upgrades. +The best way to get client implementers to review your MIP is to present it on a Monad Core Developers call. These calls serve as a way for client implementers to do three things. First, to discuss the technical merits of MIPs. Second, to gauge what will be implemented. Third, to coordinate MIP implementation for network upgrades. -These calls generally result in a "rough consensus" around what MIPs should be implemented. This "rough consensus" rests on the assumptions that MIPs are not contentious enough to cause a network split and that they are technically sound. +These calls generally result in a “rough consensus” around what MIPs should be implemented. Social consensus gathering during the MIP process is critical, and provides the MIP author and stakeholders with signal that the proposed changes are agreeable within the ecosystem. This “rough consensus” rests on the assumptions that MIPs are not contentious enough to cause a network split and that they are technically sound. *In short, your role as the champion is to write the MIP using the style and format described below, shepherd the discussions in the appropriate forums, and build community consensus around the idea.* @@ -95,7 +89,7 @@ The following is the standardization process for all MIPs in all tracks: **Stagnant** - Any MIP in `Draft` or `Review` or `Last Call` if inactive for a period of 3 months or greater is moved to `Stagnant`. A MIP may be resurrected from this state by Authors or MIP Editors through moving it back to `Draft` or its earlier status. If not resurrected, a proposal may stay forever in this status. ->*MIP Authors are notified of any algorithmic change to the status of their MIP* +> *MIP Authors are notified of any algorithmic change to the status of their MIP* **Withdrawn** - The MIP Author(s) have withdrawn the proposed MIP. This state has finality and can no longer be resurrected using this MIP number. If the idea is pursued at a later date, it is considered a new proposal. @@ -216,28 +210,20 @@ Other than the specific exceptions listed below, links to external resources **S The following external resources may be linked: - **MonadBFT Specification**: Links to the [MonadBFT specification](https://doi.org/10.48550/arXiv.2502.20692) may be included using normal Markdown syntax, but MUST anchor to a specific version. - - **Ethereum Yellow Paper**: Links to the [Ethereum Yellow Paper](https://github.com/ethereum/yellowpaper/blob/efc5f9a1f356cba376c978eedb63cb0363c2aa85/Paper.tex) may be included using normal Markdown syntax, but MUST anchor to a specific commit. - - **Ethereum Execution Client Specifications**: Links to the [Ethereum Execution Client Specifications](https://github.com/ethereum/execution-specs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. - - **Internet Engineering Task Force (IETF)**: Links to an IETF Request For Comment (RFC) specification may be included using normal Markdown syntax. Permitted URLs MUST anchor to a specification with an assigned RFC number. - - **Ethereum Improvement Proposals (EIPs)**: Links to [EIPs](https://github.com/ethereum/EIPs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. - - **Bitcoin Improvement Proposals (BIPs)**: Links to [BIPs](https://github.com/bitcoin/bips) may be included using normal Markdown syntax, but MUST anchor to a specific commit. - - **Chain Agnostic Improvement Proposals (CAIPs)**: Links to [CAIPs](https://github.com/ChainAgnostic/CAIPs) may be included using normal Markdown syntax, but MUST anchor to a specific commit. - -- **World Wide Web Consortium (W3C)**: Links to a W3C "Recommendation" status specification may be included using normal Markdown syntax. Permitted URLs MUST anchor to a specification in the technical reports namespace with a date. - +- **World Wide Web Consortium (W3C)**: Links to a W3C “Recommendation” status specification may be included using normal Markdown syntax. Permitted URLs MUST anchor to a specification in the technical reports namespace with a date. - **Digital Object Identifier System (DOI)**: Links qualified with a Digital Object Identifier (DOI) may be included. The top-level URL field must resolve to a copy of the referenced work that is freely accessible to the public. ## Linking to Other MIPs References to other MIPs should follow the format `MIP-N` where `N` is the MIP number you are referring to. Each MIP that is referenced in a MIP **MUST** be accompanied by a relative markdown link the first time it is referenced, and **MAY** be accompanied by a link on subsequent references. The link **MUST** always be done via relative paths so that the links work in this GitHub repository, forks of this repository, and mirrors. For example, you would link to this MIP as `./MIP-1.md`. -When referring to a MIP with a `category` of `MRC`, it must be written in the hyphenated form `MRC-X` where `X` is that MIP's assigned number. When referring to MIPs with any other `category`, it must be written in the hyphenated form `MIP-X` where `X` is that MIP's assigned number. +When referring to a MIP with a `category` of `MRC`, it must be written in the hyphenated form `MRC-X` where `X` is that MIP’s assigned number. When referring to MIPs with any other `category`, it must be written in the hyphenated form `MIP-X` where `X` is that MIP’s assigned number. ## Auxiliary Files @@ -245,9 +231,9 @@ Images, diagrams and auxiliary files should be included in a subdirectory of the ## Transferring MIP Ownership -It occasionally becomes necessary to transfer ownership of MIPs to a new champion. In general, we'd like to retain the original author as a co-author of the transferred MIP, but that's really up to the original author. A good reason to transfer ownership is because the original author no longer has the time or interest in updating it or following through with the MIP process, or is unreachable. A bad reason to transfer ownership is because you don't agree with the direction of the MIP. We try to build consensus around a MIP, but if that's not possible, you can always submit a competing MIP. +It occasionally becomes necessary to transfer ownership of MIPs to a new champion. In general, we’d like to retain the original author as a co-author of the transferred MIP, but that’s really up to the original author. A good reason to transfer ownership is because the original author no longer has the time or interest in updating it or following through with the MIP process, or is unreachable. A bad reason to transfer ownership is because you don’t agree with the direction of the MIP. We try to build consensus around a MIP, but if that’s not possible, you can always submit a competing MIP. -If you are interested in assuming ownership of a MIP, send a message asking to take over, addressed to both the original author and the MIP editor. If the original author doesn't respond in a timely manner, the MIP editor will make a unilateral decision. +If you are interested in assuming ownership of a MIP, send a message asking to take over, addressed to both the original author and the MIP editor. If the original author doesn’t respond in a timely manner, the MIP editor will make a unilateral decision. ## MIP Editors @@ -262,11 +248,11 @@ The current MIP editors are: For each new MIP that comes in, an editor does the following: -- Read the MIP to check if it is ready: sound and complete. The ideas must make technical sense, even if they don't seem likely to get to final status. +- Read the MIP to check if it is ready: sound and complete. The ideas must make technical sense, even if they don’t seem likely to get to final status. - The title should accurately describe the content. - Check the MIP for language (spelling, grammar, sentence structure, etc.), markup (GitHub-flavored Markdown), and code style. -If the MIP isn't ready, the editor will send it back to the author for revision, with specific instructions. +If the MIP isn’t ready, the editor will send it back to the author for revision, with specific instructions. Once the MIP is ready for the repository, the MIP editor will: @@ -274,7 +260,7 @@ Once the MIP is ready for the repository, the MIP editor will: - Merge the corresponding [pull request](https://github.com/monad-crypto/MIPs/pulls). - Send a message back to the MIP author with the next step. -The editors don't pass judgment on MIPs. They merely do the administrative and editorial part. +The editors don’t pass judgment on MIPs. They merely do the administrative and editorial part. ## Style Guide @@ -314,7 +300,7 @@ Network upgrades that activate a bundle of upstream Ethereum EIPs (such as EIPs ## History -This document was derived heavily from [Ethereum's EIP-1](https://eips.ethereum.org/EIPS/eip-1) written by Martin Becze, Hudson Jameson, et al., which in turn was derived from [Bitcoin's BIP-0001](https://github.com/bitcoin/bips) written by Amir Taaki, which in turn was derived from [Python's PEP-0001](https://peps.python.org/). In many places text was simply copied and modified. The authors of those documents are not responsible for its use in the Monad Improvement Process, and should not be bothered with technical questions specific to Monad or the MIP process. Please direct all comments to the MIP editors. +This document was derived heavily from [Ethereum’s EIP-1](https://eips.ethereum.org/EIPS/eip-1) written by Martin Becze, Hudson Jameson, et al., which in turn was derived from [Bitcoin’s BIP-0001](https://github.com/bitcoin/bips) written by Amir Taaki, which in turn was derived from [Python’s PEP-0001](https://peps.python.org/). In many places text was simply copied and modified. The authors of those documents are not responsible for its use in the Monad Improvement Process, and should not be bothered with technical questions specific to Monad or the MIP process. Please direct all comments to the MIP editors. ## Copyright From a55b6ee97067ad11e4019fab1eb7e2d09b7ca82f Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Tue, 31 Mar 2026 23:28:20 +0530 Subject: [PATCH 09/10] rm: irrelevant line --- MIPS/MIP-1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md index 7912afe..1cf94e8 100644 --- a/MIPS/MIP-1.md +++ b/MIPS/MIP-1.md @@ -28,7 +28,7 @@ There are three types of MIP: - **Networking**: improvements to the peer-to-peer networking layer, block propagation mechanisms (such as RaptorCast), transaction dissemination, and other network protocol specifications. - **Interface**: improvements around client-level standards like JSON-RPC method names, contract ABIs, and other interface conventions shared between the execution and consensus components. - **MRC**: application-level standards and conventions, including contract standards such as token standards, name registries, URI schemes, library or package formats, and wallet formats. MRC stands for Monad Request for Comments. -- A **Meta MIP** describes a process surrounding Monad or proposes a change to (or an event in) a process. Meta MIPs are like Standards Track MIPs but apply to areas other than the Monad protocol itself. They may propose an implementation, but not to Monad’s codebase; they often require community consensus; unlike Informational MIPs, they are more than recommendations, and users are typically not free to ignore them. Examples include procedures, guidelines, changes to the decision-making process, changes to the tools or environment used in Monad development, and specifications for named network upgrades. Any Meta MIP is also considered a Process MIP. +- A **Meta MIP** describes a process surrounding Monad or proposes a change to (or an event in) a process. Meta MIPs are like Standards Track MIPs but apply to areas other than the Monad protocol itself. They may propose an implementation, but not to Monad’s codebase; they often require community consensus; unlike Informational MIPs, they are more than recommendations, and users are typically not free to ignore them. Examples include procedures, guidelines, changes to the decision-making process, changes to the tools or environment used in Monad development, and specifications for named network upgrades. - An **Informational MIP** describes a Monad design issue, or provides general guidelines or information to the Monad community, but does not propose a new feature. Informational MIPs do not necessarily represent Monad community consensus or a recommendation, so users and implementers are free to ignore Informational MIPs or follow their advice. It is highly recommended that a single MIP contain a single key proposal or new idea. The more focused the MIP, the more successful it tends to be. From a13cab8220fdbca1899b256cdd9d76ee8f8c7439 Mon Sep 17 00:00:00 2001 From: qedk <1994constant@gmail.com> Date: Tue, 7 Apr 2026 01:05:34 +0530 Subject: [PATCH 10/10] feat: add categories for Meta MIPs --- MIPS/MIP-1.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/MIPS/MIP-1.md b/MIPS/MIP-1.md index 1cf94e8..ec98e9d 100644 --- a/MIPS/MIP-1.md +++ b/MIPS/MIP-1.md @@ -6,6 +6,7 @@ author: QEDK (@qedk) discussions-to: https://forum.monad.xyz/t/mip-1-mip-purpose-and-guidelines status: Draft type: Meta +category: Process created: 2026-02-24 --- @@ -28,7 +29,9 @@ There are three types of MIP: - **Networking**: improvements to the peer-to-peer networking layer, block propagation mechanisms (such as RaptorCast), transaction dissemination, and other network protocol specifications. - **Interface**: improvements around client-level standards like JSON-RPC method names, contract ABIs, and other interface conventions shared between the execution and consensus components. - **MRC**: application-level standards and conventions, including contract standards such as token standards, name registries, URI schemes, library or package formats, and wallet formats. MRC stands for Monad Request for Comments. -- A **Meta MIP** describes a process surrounding Monad or proposes a change to (or an event in) a process. Meta MIPs are like Standards Track MIPs but apply to areas other than the Monad protocol itself. They may propose an implementation, but not to Monad’s codebase; they often require community consensus; unlike Informational MIPs, they are more than recommendations, and users are typically not free to ignore them. Examples include procedures, guidelines, changes to the decision-making process, changes to the tools or environment used in Monad development, and specifications for named network upgrades. +- A **Meta MIP** describes a process surrounding Monad or proposes a change to (or an event in) a process. Meta MIPs are like Standards Track MIPs but apply to areas other than the Monad protocol itself. They may propose an implementation, but not to Monad’s codebase; they often require community consensus; unlike Informational MIPs, they are more than recommendations, and users are typically not free to ignore them. Examples include procedures, guidelines, changes to the decision-making process, changes to the tools or environment used in Monad development, and specifications for named network upgrades. Furthermore, Meta MIPs can be broken down into the following categories: + - **Process**: proposals related to procedures, guidelines, changes to the decision-making process, changes to the tools or environment used in Monad development, and specifications for the MIP process itself. + - **Hardfork**: network upgrade Meta MIPs that specify the set of Standards Track MIPs included in a named network upgrade (such as `MONAD_NINE`), along with activation timestamps for each network (Monad Testnet, Monad Mainnet). Each Hardfork Meta MIP serves as the canonical record for a specific network upgrade. - An **Informational MIP** describes a Monad design issue, or provides general guidelines or information to the Monad community, but does not propose a new feature. Informational MIPs do not necessarily represent Monad community consensus or a recommendation, so users and implementers are free to ignore Informational MIPs or follow their advice. It is highly recommended that a single MIP contain a single key proposal or new idea. The more focused the MIP, the more successful it tends to be. @@ -47,7 +50,7 @@ Because Monad’s execution and consensus layers are maintained as separate comp ### Network Upgrade Meta MIPs -Named network upgrades on Monad (such as `MONAD_NINE`) MUST be specified by a Meta MIP. The network upgrade Meta MIP MUST list all included Standards Track MIPs and specify the activation timestamps for each network (Monad Testnet, Monad Mainnet). The network upgrade Meta MIP MUST use `requires` to reference all included MIPs. +Named network upgrades on Monad (such as `MONAD_NINE`) MUST be specified by a Meta MIP with category `Hardfork`. The network upgrade Meta MIP MUST list all included Standards Track MIPs and specify the activation timestamps for each network (Monad Testnet, Monad Mainnet). The network upgrade Meta MIP MUST use `requires` to reference all included MIPs. ## MIP Work Flow @@ -143,7 +146,7 @@ Each MIP must begin with an [RFC 822](https://www.ietf.org/rfc/rfc822.html) styl `type`: *One of `Standards Track`, `Meta`, or `Informational`* -`category`: *One of `Core`, `Networking`, `Interface`, or `MRC`* (Optional field, only needed for `Standards Track` MIPs) +`category`: *One of `Core`, `Networking`, `Interface`, or `MRC` for `Standards Track` MIPs; one of `Process` or `Hardfork` for `Meta` MIPs* (Optional field, only needed for `Standards Track` and `Meta` MIPs) `created`: *Date the MIP was created on* @@ -185,11 +188,11 @@ The preferred discussion URL is a topic on the Monad community forum. The URL ca ### `type` Header -The `type` header specifies the type of MIP: Standards Track, Meta, or Informational. If the track is Standards, please include the subcategory (Core, Networking, Interface, or MRC). +The `type` header specifies the type of MIP: Standards Track, Meta, or Informational. If the track is Standards, please include the subcategory (Core, Networking, Interface, or MRC). If the track is Meta, please include the subcategory (Process or Hardfork). ### `category` Header -The `category` header specifies the MIP's category. This is required for Standards Track MIPs only. +The `category` header specifies the MIP's category. This is required for Standards Track and Meta MIPs only. ### `created` Header