# \[Proposal\] Excluded Proxy Contract Airdrop — Phase 1

**URL:** <https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811>\
**Category:** Requests for Comment\
**Created:** [September 25, 2020, 1:08am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811 "2020-09-25T01:08:29Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![nadav\_dharma](https://avatars.discourse-cdn.com/v4/letter/n/e79b87/32.png) [@nadav\_dharma](https://gov.uniswap.org/u/nadav_dharma)\
**Post date:** [September 25, 2020, 1:08am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/1 "2020-09-25T01:08:29Z")

</div>

## Context

- Why: [https://gov.uniswap.org/t/retroactive-airdrop-excludes-proxy-contract-users-e-g-dharma-matcha-etc/1222/22](https://gov.uniswap.org/t/retroactive-airdrop-excludes-proxy-contract-users-e-g-dharma-matcha-etc/1222/22)
- How: [https://gov.uniswap.org/t/application-for-retroactive-proxy-contract-airdrop-for-projects-apps/3221](https://gov.uniswap.org/t/application-for-retroactive-proxy-contract-airdrop-for-projects-apps/3221)
- Code: [https://github.com/dharmaprotocol/excluded-uni-airdrop-users](https://github.com/dharmaprotocol/excluded-uni-airdrop-users)

## Preface

- We have compiled sets of users excluded from the retrospective airdrop due to the proxy contract issue from projects integrated into Uniswap, and validated programmatically that their submitted users were indeed unfairly excluded due to technincal oversight.
- In summary, there are two rough cohorts of project-types who are affected: **application integrations** , and **DEX aggregators**. Given that these two cohorts have very different sizes and vey different end-user characteristics, we are separating our proposal into two sequential phases — first for the application integrations, second for the DEX aggregators
- We divide these cohorts on the basis of how easy it is to programmatically hook a trading bot into them, as this is a proxy for what portion of these cohorts risk representing multiple addresses per end-user. If an application is clearly tailored towards programmatic usage (i.e. it exposes an API on its landing page), it falls in the **DEX aggregator camp**. If it does not, it falls in the **application integrations** camp.
- **Our personal opinion is that both cohorts were likely unintentionally excluded and ought to be compensated by this proposal;** however, we recognize that the two cohorts engender very different debates around whether or not they ought to be compensated, with quite different magnitudes of impact on UNI holders. **We do not want to conflate the two into a singular vote, and risk jeopardizing both on account of the other.**

## Phases

### PHASE ONE: Application Integrations — 12,600 accounts

```auto
Project Accounts
Argent 3418 (27.13%)
DeFi Saver 890 (7.06%)
Dharma 2833 (22.48%)
eidoo 301 (2.39%)
FURUCOMBO 57 (0.45%)
MEW 4278 (33.95%)
Nuo 740 (5.87%)
Opyn 79 (0.63%)
rebalance 4 (0.03%)

```

### PHASE TWO: DEX Aggregators — 26,598 accounts

```auto
Project Accounts (overlapping %'s)
0x 1772 (6.66%)
1inch 4924 (18.51%)
DEXAG 465 (1.75%)
Kyber 23933 (89.98%)
Totle 718 (2.70%)

```

## What Happens Now

- We have deployed a MerkleDistributor contract that commits to the **Phase One** cohort. [https://etherscan.io/address/0x6a9929d29b7488517d383358a847c95a5d1d6d76#code](https://etherscan.io/address/0x6a9929d29b7488517d383358a847c95a5d1d6d76#code)
- The proposal we want to submit would look as follows:

```auto
* targets: `["0x1f9840a85d5aF5bf1D1762F925BDADdC4201F9841"]` (UNI)
* values: `[0]`
* signatures: `["approve(address,uint256)"]`
* calldatas: `[0x0000000000000000000000006a9929D29b7488517D383358a847c95a5D1d6d76000000000000000000000000000000000000000000042b42f28d278eee000000]` (address: `0x6a9929D29b7488517D383358a847c95a5D1d6d76` (phase one merkle dropper, amount: 5.04M UNI)

```

- In summary, it would be granting 5.04m UNI approval from the community treasury to the MerkleDistributor contract for Phase 1.
- If this proposal passes (and no subsequent proposal nullifies it), on October 17th any third party will be able to transfer 5.04m UNI into the MerkleDistributor contract. **At this point, users in the Phase 1 cohort will be able to withdraw 400 UNI each from the MerkleDistributor contract.**

## We now need to amass at least 10M UNI delegated to an address in order to submit a proposal to vote. There are two ways we can make this happen:

- **Delegate to Dharma at 0x7e4A8391C728fEd9069B2962699AB416628B19Fa**. We are very active participants in Compound’s governance, have sufficient technical acumen and resources to develop proposals securely, and have basically our entire business on the line as “skin in the game”. We think we’re a great party to delegate to 🤓
- **Perhaps _most_ efficient & quick would be if supportive UNI holders delegate to the Univalent delegation (yuni.finance), and request they put the proposal to a vote.** I would not recommend users do this until we receive assurance that the Univalent delegation would be interested in putting the proposal up for a vote. Note that proposing != voting for — Univalent could kindly help us get this proposal live and vote against it if they so pleased! **Can folks please help get in touch with Andre, Tarun, Kain, and Stani to see if they’re interested?**. We can likely help push them over the 10M line.

I expect aspects of this proposal to be contentious, so I’ll leave the community with a last note, copy-pasta’d from the original post I shared in this forum:

> I will note to the community that this vote sets a cultural precedent as to how the protocol treats not only its direct users but also developers who take entrepreneurial bets building on Uniswap. **The status quo has unfortunately punished our users and eroded our reputation with them — future builders will heed the signal and precedent set by how the Uniswap community addresses this.**

Let the discussion begin!

-N

---

<div class="post-metadata">

**Author:** ![Zer0dot](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/zer0dot/32/400_2.png) [@Zer0dot](https://gov.uniswap.org/u/Zer0dot)\
**Post date:** [September 25, 2020, 1:45am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/2 "2020-09-25T01:45:20Z")

</div>

Just want to point out that Argent wallet users were able to get their airdrop, isn’t that right?

It might have been convoluted but they had [a page about it.](https://www.argent.xyz/blog/uni-tokens/)

Let me know if I’m on the wrong page here, it’s definitely unfortunate that so many people were excluded.

---

<div class="post-metadata">

**Author:** ![drew](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/drew/32/1194_2.png) [@drew](https://gov.uniswap.org/u/drew)\
**Post date:** [September 25, 2020, 7:05am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/3 "2020-09-25T07:05:41Z")

</div>

Paraswap indicated they were submitting a list ([https://twitter.com/paraswap/status/1309169251652177933](https://twitter.com/paraswap/status/1309169251652177933)) but I don’t see them here. Did they fail to submit before the cutoff date?

---

<div class="post-metadata">

**Author:** ![MrDost](https://avatars.discourse-cdn.com/v4/letter/m/f19dbf/32.png) [@MrDost](https://gov.uniswap.org/u/MrDost)\
**Post date:** [September 25, 2020, 7:22am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/4 "2020-09-25T07:22:10Z")

</div>

Could you include paraswap, please? 🙏

> <https://twitter.com/paraswap/status/1309274376198651906>

---

<div class="post-metadata">

**Author:** ![unitoshi](https://avatars.discourse-cdn.com/v4/letter/u/45deac/32.png) [@unitoshi](https://gov.uniswap.org/u/unitoshi)\
**Post date:** [September 25, 2020, 10:02am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/5 "2020-09-25T10:02:29Z")

</div>

The [page](https://www.argent.xyz/blog/uni-tokens/) talks specifically (only) about users who have provided liquidity to Uniswap through Argent.

This proposal include other Argent users who have [swapped tokens through Uniswap](https://gov.uniswap.org/t/application-for-retroactive-proxy-contract-airdrop-for-projects-apps/3221/81).

---

<div class="post-metadata">

**Author:** ![Giratina](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/giratina/32/1043_2.png) [@Giratina](https://gov.uniswap.org/u/Giratina)\
**Post date:** [September 25, 2020, 10:18am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/6 "2020-09-25T10:18:25Z")

</div>

How many votes does Dharma currently have?

I’ll gladly delegate my vote to the team.

I’m not 100% sure but I believe that yuni.finance just hit 10mil votes.

---

<div class="post-metadata">

**Author:** ![coffice](https://avatars.discourse-cdn.com/v4/letter/c/a8b319/32.png) [@coffice](https://gov.uniswap.org/u/coffice)\
**Post date:** [September 25, 2020, 11:03am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/7 "2020-09-25T11:03:26Z")

</div>

hello,

I have a question about the Phase\_Two. when will Phase\_Two be started?

many thanks.

---

<div class="post-metadata">

**Author:** ![TragedyStruck](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/tragedystruck/32/1204_2.png) [@TragedyStruck](https://gov.uniswap.org/u/TragedyStruck)\
**Post date:** [September 25, 2020, 11:14am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/8 "2020-09-25T11:14:04Z")

</div>

If I send `0x7e4A8391C728fEd9069B2962699AB416628B19Fa` to the `balanceOf` of the contract [https://etherscan.io/address/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984#readContract](https://etherscan.io/address/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984#readContract) I get:

> uint256 : `1000403434097477213`

Then again, I might be an idiot (how many decimals is that… 18?).

---

<div class="post-metadata">

**Author:** ![Uniguy772](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/uniguy772/32/1072_2.png) [@Uniguy772](https://gov.uniswap.org/u/Uniguy772)\
**Post date:** [September 25, 2020, 11:16am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/9 "2020-09-25T11:16:46Z")

</div>

![Screenshot_20200925-121548_Chrome](https://us1.discourse-cdn.com/flex016/uploads/uniswap1/original/2X/4/4510474f2c4f59133b7d1c23823b5d0c4099936a.jpeg)  
Yes the uni token is 18 decimal places you can usually find details like those on Etherscan

---

<div class="post-metadata">

**Author:** ![Uniguy772](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/uniguy772/32/1072_2.png) [@Uniguy772](https://gov.uniswap.org/u/Uniguy772)\
**Post date:** [September 25, 2020, 11:19am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/10 "2020-09-25T11:19:22Z")

</div>

Each of these still have to go through the proposal stage and have enough UNI holders agree to another distribution thus why the OG mentioned

> [@nadav\_dharma](#):
>
> **Our personal opinion is that both cohorts were likely unintentionally excluded and ought to be compensated by this proposal;** however, we recognize that the two cohorts engender very different debates around whether or not they ought to be compensated, with quite different magnitudes of impact on UNI holders. **We do not want to conflate the two into a singular vote, and risk jeopardizing both on account of the other.**

So it could still go to proposal and face rejection in which case none of these people would be compensated or it could go to proposal and pass meaning they would receive tokens from the Community Treasury

---

<div class="post-metadata">

**Author:** ![TragedyStruck](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/tragedystruck/32/1204_2.png) [@TragedyStruck](https://gov.uniswap.org/u/TragedyStruck)\
**Post date:** [September 25, 2020, 11:24am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/11 "2020-09-25T11:24:55Z")

</div>

Thanks! The “I might be an idiot”-part came from trying to find the number of delegates. Seems `balanceOf ` just gives the number of held UNI, which didn’t help @Giratina very much.

---

<div class="post-metadata">

**Author:** ![coffice](https://avatars.discourse-cdn.com/v4/letter/c/a8b319/32.png) [@coffice](https://gov.uniswap.org/u/coffice)\
**Post date:** [September 25, 2020, 11:25am UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/12 "2020-09-25T11:25:49Z")

</div>

Uniguy772 thank you so much

I hope Phase\_Two’s distribution will begin soon)

---

<div class="post-metadata">

**Author:** ![0age](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/0age/32/1137_2.png) [@0age](https://gov.uniswap.org/u/0age)\
**Post date:** [September 25, 2020, 1:12pm UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/13 "2020-09-25T13:12:40Z")

</div>

[Here’s the merkle root, token total, and claims](https://raw.githubusercontent.com/dharma-eng/merkle-distributor/bdb4007911b3a5032ceac19033c7912cf3688c45/merkle-roots/phase-one-merkle-root.json) (account, index, amount, and proof) for all 12,600 accounts in phase one (400 UNI each, 5,040,000 UNI total) — phase two needs to be regenerated to include Paraswap (thanks for pointing out the omission, @MrDost… PR has been merged!)

---

<div class="post-metadata">

**Author:** ![0age](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/0age/32/1137_2.png) [@0age](https://gov.uniswap.org/u/0age)\
**Post date:** [September 25, 2020, 1:14pm UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/14 "2020-09-25T13:14:19Z")

</div>

@TragedyStruck `balanceOf` gives the UNI balance of an account, not the delegated votes — to get those, you want `getCurrentVotes`!

---

<div class="post-metadata">

**Author:** ![Uniguy772](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/uniguy772/32/1072_2.png) [@Uniguy772](https://gov.uniswap.org/u/Uniguy772)\
**Post date:** [September 25, 2020, 1:24pm UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/15 "2020-09-25T13:24:43Z")

</div>

Cant confirm why but Paraswap would have probably been excluded for a reason. Dharma made a forum post a while back and asked affected exchanges to reach out with proof and verified figures along with contract addresses that interactedwith Uniswap… a lot of exchanges that submitted were vetted and weren’t included on the final list I’m sure for good reasons.

I’m sure if a verified team member from Paraswap reached out to Dharma on here a discussion could be had but I would think it’s unlikely they’ll be included as it would be unfair to exchanges who met the deadlines

---

<div class="post-metadata">

**Author:** ![0age](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/0age/32/1137_2.png) [@0age](https://gov.uniswap.org/u/0age)\
**Post date:** [September 25, 2020, 2:02pm UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/16 "2020-09-25T14:02:12Z")

</div>

While the focus of this proposal is on Phase One, i.e. application integrations, here is the updated information on Phase Two, i.e. DEX aggregators (including ParaSwap):

```auto
PHASE TWO: 26,986 accounts — 10,794,400 UNI @ 400 UNI per unique account
Project Accounts (overlapping %'s)
0x 1772 (6.57%)
1inch 4924 (18.25%)
DEXAG 465 (1.72%)
Kyber 23933 (88.69%)
ParaSwap 486 (1.80%)
Totle 718 (2.66%)

```

[Link to merkle root and claims](https://raw.githubusercontent.com/dharma-eng/merkle-distributor/bdb4007911b3a5032ceac19033c7912cf3688c45/merkle-roots/phase-two-merkle-root.json)

---

<div class="post-metadata">

**Author:** ![coffice](https://avatars.discourse-cdn.com/v4/letter/c/a8b319/32.png) [@coffice](https://gov.uniswap.org/u/coffice)\
**Post date:** [September 25, 2020, 2:08pm UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/17 "2020-09-25T14:08:15Z")

</div>

0age big thanks

please keep us informed about the Phase\_Two!

---

<div class="post-metadata">

**Author:** ![fulviamorales](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/fulviamorales/32/1187_2.png) [@fulviamorales](https://gov.uniswap.org/u/fulviamorales)\
**Post date:** [September 25, 2020, 2:46pm UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/19 "2020-09-25T14:46:09Z")

</div>

Hi, Fulvia from 0x Labs. We applied on behalf of the 0x API integrators to facilitate things for them. We can demonstrate that the affected addresses we reported originated transactions through user-facing applications like Matcha, Zerion and DeFi saver — which is included in the first group. If we provide the split would they be included in the first group?

---

<div class="post-metadata">

**Author:** ![hazucf](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/hazucf/32/276_2.png) [@hazucf](https://gov.uniswap.org/u/hazucf)\
**Post date:** [September 25, 2020, 2:58pm UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/20 "2020-09-25T14:58:00Z")

</div>

John from Matcha here, just wanted to echo Fulvia’s message.

Given the switch up on grouping and cohorts, Matcha should be submitted with the first cohort as it is a customer-facing application. Per the grouping criteria, Matcha provides no API integration for programatic usage thus falling squarely into an ‘application integration’ criteria. (e.g. No trading bots can be used on Matcha)

We can provide a breakdown for Matcha users specifically. Can you confirm @0age

---

<div class="post-metadata">

**Author:** ![Giratina](https://sea2.discourse-cdn.com/flex016/user_avatar/gov.uniswap.org/giratina/32/1043_2.png) [@Giratina](https://gov.uniswap.org/u/Giratina)\
**Post date:** [September 25, 2020, 2:59pm UTC](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811/21 "2020-09-25T14:59:40Z")

</div>

Check the yuni site, they have 2 goals, it looks like goal 1 was met.

Also to check delegates I believe you have to use the “read current votes” function. Or #9 on etherscan under the read tab.

[Next page](https://gov.uniswap.org/t/proposal-excluded-proxy-contract-airdrop-phase-1/5811.md?page=2)
