# Gitcoin 捐款分配机制详解

By [Simon 写字的地方](https://paragraph.com/@simon-2) · 2024-08-12

---

什么是 Matching Pool?
------------------

Gitcoin Matching Pool 是由以太坊基金会，用户捐助，赞助机构（或个人）共同构成的[配捐](https://mirror.xyz/0xcAFbD0F634F9B7461150697DF00e157093C2372e/RyHN_aI3YHjw1v0xV4ehbcSiYefrVTIvFJXw0V2w2VY)池，供 [Grants Round](https://mirror.xyz/0xcAFbD0F634F9B7461150697DF00e157093C2372e/RyHN_aI3YHjw1v0xV4ehbcSiYefrVTIvFJXw0V2w2VY) 期间，向获得用户投票的项目捐助更多资金。

工作流程
----

![捐款分配流程图](https://storage.googleapis.com/papyrus_images/e98742454677cd49856c18f99717d49ae145071d1f9987ffbe689dab65117e00.png)

捐款分配流程图

在 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 用于提交分配，而不会将所有地址及其份额存储在链上，这是一种常用的[空投技术](https://github.com/smartzplatform/constructor-eth-merkle-airdrop)。

### 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](https://mirror.xyz/0xcAFbD0F634F9B7461150697DF00e157093C2372e/RyHN_aI3YHjw1v0xV4ehbcSiYefrVTIvFJXw0V2w2VY) 中我们曾提到 GR 是根据[二次方投票](https://mirror.xyz/0xcAFbD0F634F9B7461150697DF00e157093C2372e/RyHN_aI3YHjw1v0xV4ehbcSiYefrVTIvFJXw0V2w2VY)方式进行配捐的，但具体是如何分配的呢？

算法很简单，比如项目 A 的可拿配捐资金为

![Gitcoin Grants 分配公式](https://storage.googleapis.com/papyrus_images/65d1272e0d67c00fa95c3643aedaa402ad972b374c4caa6bdeaa1d7c7c6f9b70.png)

Gitcoin Grants 分配公式

**其中 m 为配捐池的总金额，n\_a 为项目 A 获得的用户投票数，Totalvotes 为 GR 中所有项目获得的总票数。**

不过，为了避免[头部效应](https://medium.com/zero-knowledge-validator/100k-distributed-in-zktech-dedicated-gitcoin-grant-side-round-68e767d0fdba)，让更多的项目方获得资助，Gitcoin 对每轮 GR 的单项目获取 **Grants 数量设置了 2.5% 的硬顶**。比如 GR 配捐池的总金额为 100 万美金，那么一个项目最多也只能拿到 2.5 万美金的配捐，超出部分，则返回配捐池，重新进行分配。

注：原文首发于 Ai 姨，作者为 Simon。

---

*Originally published on [Simon 写字的地方](https://paragraph.com/@simon-2/gitcoin)*
