To integrate with funding sources clrfund needs a permanent matching pool address.
Example 1: A crypto system with continuous token issuance (similar to 1Hive), where community wants to allocate some portion of issued tokens using quadratic funding protocol.
Example 2: A community formed around DeFi protocol wants to use some portion of collected fees to fund public goods.
One way to achieve this is to keep matcing funds in a standalone matching pool contract that is controlled by the funding source (as suggested earlier in another thread).
The interface of the matching pool contract may look like this:
interface IMatchingPool {
function transferFunds(address _token, address _recipient) external;
}
The FundingRoundFactory
should call transferFunds()
method when the funding round is finalized to transfer funds from the matching pool to the funding round contract (_recipient
). The funding source can control who is allowed to call transferFunds()
and implement arbitrary logic inside it. For example they can limit the rate of transfers or automatically exchange their token to round’s native token (_token
). They can also switch to another clrfund instance in case of upgrade or attack.
If you are interested in integrating with clrfund, please give your feedback