This post is a kickoff to the process of creating a decentralized version of the Gitcoin Grants system. In it, we’ll summarize the goals and ethos of the project, as well as the high level architecture and foreseen challenges. We invite feedback on any and all portions of this document. Community involvement in this process is imperative to its success.
Unpacking “Decentralized”
The word “decentralized” is overloaded in the crypto world. A useful starting point is to unpack this term into more precise ones, and to specify which form(s) of decentralization the Gitcoin Grants project will aim for.
Rigid Decentralization
In its strongest form, decentralization can be interpreted to mean automatic, immutable, and maximally censorship resistant. In the abstract, these are worthy properties to pursue. However, there are some contexts where they are not yet attainable, for at least one of two reasons:
Flexible Decentralization
In cases where “rigid decentralization” is not attainable, there are many other aspects of decentralization which still apply. These include properties such as verifiability, community ownership, non-gatedness, distribution, trust minimization and many others.
As a principle, Gitcoin Grants will aim for Rigid Decentralization wherever possible.
Where there is a technical limitation that currently prevents rigid decentralization, Gitcion Grants will opt for a flexible alternative that can one day progress to a more rigidly decentralized solution when possible.
In addition to adopting such solutions when developed by others, Gitcoin Grants will pursue the development of solutions to some of these problems within its own community. Where possible, Gitcoin Grants will dog food Gitcoin Grants to fund the development of such technologies.
Where rigid decentralization is impossible due to a fundamental opposition to Gitcoin Grant’s mission, Gitcoin will nonetheless strive for maximal decentralization along those axes where it is impossible. For example: deciding which grants do or don’t qualify for matching is by definition a matter of human judgment, but we can strive to give the broader community the ability to exercise this judgment as it sees fit.
Verifiability and community ownership will be two pillars of this effort. Wherever possible, participants in Gitcoin Grants should be able to verify the integrity of the system independently, and empowered to make changes to any special privileges granted in the system via proposals to the GTC Dao.
Core Components
Here we enumerate the core entities in the Gitcoin Grants system, that is those that flow naturally out of the desired behaviors.
This section presumes a basic knowledge of the existing, mostly-centralized Gitcoin Grants product, and with underlying concepts such as Quadratic Funding, etc… If you’re not yet familiar with Gitcoin Grants, consider researching it a bit first, starting with the Gitcoin Grants FAQ.
Grant
Round
Contribution
Matching Donor
Grant Donor
Matching Function
Matching Payout
Core Decentralization Challenges
In this section, we seek to elucidate the core challenges that come with attempting to implement the Gitcoin Grants system in a decentralized way. We’re not aiming to discuss implementation details or UX challenges in this section, but rather the intrinsic challenges that come along with a decentralized version of Gitcoin Grants.
Put another way: imagine attempting a naive smart contract implementation of the components defined above. Where would such an implementation become unworkable, and/or run into fundamental problems when actually used in the wild? We aim to anticipate those challenges in particular here.
To some extent, each of these is a problem for the existing Gitcoin Grants product. The challenge is amplified when attempting to solve them in a decentralized way.
Sybil Attack Protection
By far the most fundamental problem for a decentralized Grants Round is that of sybil attacks. Namely, there is a huge incentive for Grant owners to impersonate organic supporters, making many contributions to their own Grant in order to boost their Matching Payout.
This issue falls somewhere in between a technical challenge and a matter of judgment. While recognizing another human as human does at some level ultimately require human judgment, there are nonetheless technical approaches that can increase the cost of impersonation such that it becomes prohibitive for a would be attacker.
Sybil protection is one of the fundamental challenges of the crypto world. While no one has “solved” the problem, there are many projects attempting to mitigate it via methods across a broad spectrum of complexity and decentralization.
Grant Validation and Qualification
Another core challenge for a decentralized version of Grants is the validation and qualification of Grants themselves. This issue falls into that category of challenge wherein the goal is fundamentally at odds with rigid decentralization. Deciding what grants qualify or don’t is fundamentally a value judgment that must require human(s) in the loop.
The spectrum of judgements to be made here is also quite broad. It ranges from obvious fraud (e.g. individuals pretending to represent a project they’re unaffiliated with) to much more nuanced concepts of fairness (for example, should a project that did a token sale or raised venture capital be allowed to participate).
Matching Function Computation
Running the computation to determine the match payouts is computationally intensive relative to what is possible on-chain. It requires tracking and iterating over thousands of Contributions per round and applying whatever predetermined quadratic matching algorithm has been chosen.
This problem falls squarely in the category of a technical challenge. The matching function is deterministic and can be set ahead of time. The limitation is purely one relating to computational bandwidth on decentralized networks.
Grants Metadata Storage
Each grant has a sizable amount of metadata associated with it, including but not limited to a project image, title, description, and other fields. Storing this data on-chain is prohibitively expensive. Furthermore, being able to update the data is desired, which only makes on-chain storage more impractical.
While various decentralized data networks exist, many either make compromises (such as IPFS does on data availability guarantees) or are early and untested. Furthermore, even if a robust decentralized storage network exists, anchoring data stored there to the Grant instance on chain is also challenging.
This problem again falls clearly into the category of technical challenge.
MVP Approach
This section details the development approach we hope to take for decentralizing Gitcoin Grants. At a high level, the methodology can be summarized in three words: ship, learn, iterate.
In particular, the hope is to develop a barebones, end-to-end implementation of the decentralized project, deploy it, and use it to run a small matching round by [DATE].
Such an MVP or “v0” of the project will first seek to implement simple versions of the core components listed above. Afterwards, we’ll seek to apply flexible, semi-decentralized mitigations to the core challenges listed above, leaning heavily on the concepts of verifiability and community (DAO) provenance. Where possible, we’ll seek to place these mitigation efforts behind abstraction barriers, such that more advanced systems can be applied in the future without significant changes to the core architecture.
After running a v0 round, we can assess what worked, what didn’t, and iterate. In addition to round-to-round improvements, we can also spool up longer running efforts to develop robust solutions to various challenges. Running the rounds will surely surface new challenges to address as well.
Below, we sketch out some initial thoughts on how to approach each of the core challenges in a v0. These suggestions should be considered as starting points in the discussion, and not even close to finalized decisions.
Sybil Attack Mitigation
Grant Validation and Qualification Approach
Matching Function Computation Abstraction
transferToPayoutContract
function that sends matching funds to a specified account, and can only be called by a privileged role Grants Metadata Storage Approach
Final Considerations
This section is a catch all for additional considerations that might be of note.
Layer 2 / Sidechains
Even for a simplified, barebones MVP, the frequency of on-chain interactions required might make a mainnet deployment of the product prohibitive, especially if gas prices remain high. It would be prudent to develop the contracts in such a way as to maintain compatibility with the increasingly robust ecosystem of scaling solutions. These include, but are not limited to, Optimism, Arbitrum, zkSync, StarkWare, Polygon, xDai and others.
One consideration if an L2 / sidechain is chosen is how the GTC DAO can express its preferences there.
GTC DAO Security
As articulated at various points in this document, a core leg of creating a decentralized Gitcoin is to give the GTC DAO control over many aspects of the system, enabling community ownership and distributed decision-making.
It will be important, then, to consider the security of the DAO as the decentralized Grants project progresses. At some point, having influence over various components of Decentralized Grants could be lucrative enough to incentivize some form of social / economic attack on the DAO itself.