# Gitcoin 捐款分配机制详解 **Published by:** [Simon 写字的地方](https://paragraph.com/@simon-2/) **Published on:** 2024-08-12 **URL:** https://paragraph.com/@simon-2/gitcoin ## Content 什么是 Matching Pool?Gitcoin Matching Pool 是由以太坊基金会,用户捐助,赞助机构(或个人)共同构成的配捐池,供 Grants Round 期间,向获得用户投票的项目捐助更多资金。工作流程捐款分配流程图在 GR 期间,为了配捐池的安全和资金分配的合理,从创建配捐池到将资金发放到申请项目手中,Matching Pool 需要经历以下流程:1. 创建新的 Matching Pool创建一个新的、多签控制的 Matching Pool 合约,每一轮的多签合约是不一样的,目前 Matching Pool 的多签由 5 个人控制(David Hoffman, Kevin Owocki, Hudson Jameson, Anthony Sassal, Eric Conoar)。2. 计算获捐情况GR 完成后,Gitcoin 会计算每笔捐款获得的最终匹配金额,并将每个项目的地址和匹配金额写进 Merkle Tree 中,Merkle Tree 用于提交分配,而不会将所有地址及其份额存储在链上,这是一种常用的空投技术。3. 将获捐情况「导入」合约Matching Pool 合约所有者通过调用合约中的 setPayouts 方法,设置 _payouts 变量,并将之前计算好的 Merkle Tree 与其映射。4. 锁定获捐情况Matching Pool 合约所有者调用 finalize 方法,将其设置为 true。注意这里一旦设置为 true,则 Merkle Tree 的映射将不再能被更新。5. 向 Matching Pool 转入资金资助者审查支付映射,如果他们认为没有问题,则可以通过普通的转账形式,将配捐资金转移到 Matching Pool 合约地址上。6. 打开领取开关收到配捐资金后, Matching Pool 合约所有者就会调用 enablePayouts 方法,该方法像一个开关,允许 Grants 获取方领取他们的资金。7. 获捐者领取资金拿到 Grants 的项目方,调用 claimMatchPayout 方法来领取自己的 grants。分配方式在之前的 Gitcoin 101 中我们曾提到 GR 是根据二次方投票方式进行配捐的,但具体是如何分配的呢? 算法很简单,比如项目 A 的可拿配捐资金为Gitcoin Grants 分配公式其中 m 为配捐池的总金额,n_a 为项目 A 获得的用户投票数,Totalvotes 为 GR 中所有项目获得的总票数。 不过,为了避免头部效应,让更多的项目方获得资助,Gitcoin 对每轮 GR 的单项目获取 Grants 数量设置了 2.5% 的硬顶。比如 GR 配捐池的总金额为 100 万美金,那么一个项目最多也只能拿到 2.5 万美金的配捐,超出部分,则返回配捐池,重新进行分配。 注:原文首发于 Ai 姨,作者为 Simon。 ## Publication Information - [Simon 写字的地方](https://paragraph.com/@simon-2/): Publication homepage - [All Posts](https://paragraph.com/@simon-2/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@simon-2): Subscribe to updates - [Twitter](https://twitter.com/0xsimonliu): Follow on Twitter