Introduction
In the Ethereum ecosystem, various grant programs play a crucial role in funding innovative projects that drive our decentralized future. However, the lack of standardization across these programs has led to inefficiencies, confusion, and difficulties in managing and tracking grants across different protocols and networks. Hence I propose the creation of a unified Grant Program Standard, comprising a standardized interface and a grant registry contract. This standard aims to harmonize the processes around grant issuance, management, and tracking, ensuring a seamless experience for all participants and contributors involved.
Problem Statement
Currently, each grant program operates with its own set of rules, interfaces, and management protocols, leading to a fragmented landscape that hinders interoperability. This lack of uniformity creates several issues:
- Inconsistent Grant Tracking: Different standards make it challenging to track grants across various platforms, leading to missed opportunities, duplicated efforts, and weak backward compatibility.
- Complex Management: Grantees and program managers struggle with keeping the communication of their grants updated, increasing the administrative burden and potential for errors.
- Limited Transparency: Without a common on-chain standard, it is difficult for the community to monitor, aggregate, and audit grant programs, which can impact trust and accountability.
To address these issues, I propose the adoption of a standardized interface based on the most common fields that are crucial for the grant lifecycle.
Proposed Interface
This interface will serve as the foundational layer for all grant programs, ensuring that key information is recorded and accessible in a consistent manner across the Ethereum ecosystem:
/// Grant Interface
id: uin256 // Grant unique identifier
network: uint256 // Blockchain network where the grant is being developed
grantee: address // Address of the person responsible for delivering and receiving the grant award
protocol: string // Name of the protocol/community that issued the grant
project: string // Name/Title of the project or company that received the grant
externalLinks[]: string // Link that redirects to the grant proposal, discussion or relative
startDate: uint256 // Start date for the grant development
endDate: uint256. // Expected completion date for the grant
status: enum(Status) // Current status of the grant
disbursements: Disbursement // Disbursement stages based on milestones
/// Disbursement Struct
fundingTokens: address[] // Tokens that will be disbursed in this stage
fundingAmounts: uint256[] // Amounts of tokens to be disbursed in this stage
disbursed: bool[] // Indicates if the disbursement has been made in this stage
/// Status Enum
Proposed, // The grant has been proposed but not yet approved (Default)
Approved, // The grant has been reviewed and approved
InProgress, // The project is actively being worked on
Completed, // The project has been completed and deliverables submitted
Cancelled, // The grant was cancelled
Rejected // The grant proposal was reviewed and rejected
Grant Registry Contract
To complement the standardized interface, I propose the development of a Grant Registry Contract. This contract will act as a universal registry where all grants, regardless of the issuing protocol or network, can be registered, tracked, and managed. Similar to how the multicall3 works.
Key Features:
- Universal Registration: Allows any grant program to register their grants using the standardized interface.
- Grant Management: Provides functionalities for program managers to update the status of grants, track progress, and manage funding distribution.
- Transparency and Audibility: Enables the community to view grant details, track funding allocations, and monitor progress, enhancing trust and accountability.
- Interoperability: Facilitates cross-chain and cross-protocol grant management, breaking down silos and enabling seamless interaction between different grant programs.
Consideration: Use of Ethereum Attestation Service (EAS)
The Ethereum Attestation Service (EAS) offers a decentralized, trustless, and on-chain method to create verifiable attestations, making it an attractive option. By utilizing EAS, we could theoretically record and verify key events, such as grant approvals, disbursements, and project completions, directly on the blockchain. However, one significant challenge in applying EAS within this context is the lack of mutability due to its reliance on static schemas.
In the proposed grant management system, flexibility is crucial, especially regarding the management of disbursement stages, milestone achievements, and potential changes in project scope or funding requirements. The static nature of EAS schemas limits the ability to modify attestations once they are created, which conflicts with the dynamic needs of a typical grant lifecycle where adjustments are often necessary.
Next Steps
- Community Feedback: I encourage feedback on the proposed interface and grant registry contract. Any suggestions for improvements or additional features are welcome.
- Implementation Draft: Upon reaching a consensus, the next step will be to draft a detailed EIP and begin the implementation process.
Looking forward to your thoughts and contributions!