Gitcoin is GDPR complaint. Learn more in
Gitcoin's Terms & Conditions.
Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
### User Story
As a Gitcoin user, my grant contributions will go through a splitter contract, so I only have to submit one transaction to Metamask.
### Why Is this Needed
A splitter contract will allow us to experiment collecting a % fee and help us cut down on the number of Metamask transactions. When successful on Grants, this long-term investment can be incorporated into Bounties and possibly Tips.
@danlipert & @thelostone-mc - does this ticket need to be broken into sub-tasks? It might be worth a quick 15 min sync for me to understand the high-level technical details on implementing a splitter contract, and then happy to bolster my own understanding and open sub-tickets as necessary.
From doing some cursory reading:
A splitter contract is a contract that would record and tell us how dividends should be divided but let us do the distribution of those funds offline using a script that uses data from reading that contract. The splitter contract employs a doubly linked list to record who is still holding tokens. This list is updated every time tokens are transferred.
Not entirely sure about understanding the doubly linked list, but it sounds like 1 txn to take all the funds, and then how they're allocated is done offline? Is that updated information then relayed back to the blockchain?
### Current Behavior
No splitter contract. Possible contract modification to implement a % fee which is complicated and involves multiple Metamask transactions.
### Expected Behavior
Splitter contract for ETH / ERC-20 tokens that has a small / no attack surface.
### Definition of Done
- [ ] splitter contract implemented for Gitcoin grants
- [ ] engineering post (engineering to make the call if this is separate)
- [ ] prep as a broader open source contribution? (engineering to make the call if this is separate)
- [ ] be be updated with engineering feedback
### Data Requirements
- [ ] each contribution id in our database should have a fee_amount once the contract is up