Skip to content

Commit c3e371e

Browse files
authored
Merge pull request from NFTX-project/mfer-airdrop-distribution
Create MFER airdrop distribution scripts
2 parents fefbb7d + 04909b1 commit c3e371e

File tree

2 files changed

+380
-0
lines changed

2 files changed

+380
-0
lines changed

deploy/scripts/DistributeMFER.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import { HardhatRuntimeEnvironment, Network } from "hardhat/types";
2+
import { ethers } from "hardhat";
3+
import { DeployFunction } from "hardhat-deploy/types";
4+
import { getConfig, getContract } from "../utils";
5+
6+
// calculated using `script/mfer-airdrop-calculate.ts`
7+
const addressTOMFER = {
8+
"0x029acd49d3aabc08402c84367c050dfd52b6c566": 16715.602674746875,
9+
"0x434f5325ddcdbbfcce64be2617c72c4aa33ec3e7": 2213.2962931339075,
10+
"0x59de64f518f99b310e8e0014823b08e849eb7a24": 8626.421882511,
11+
"0xc6cf5a020bcfc65c6f8181c04cbb5ef5050fe28e": 45431.927610543025,
12+
"0x5ad6211cd3fde39a9cecb5df6f380b8263d1e277": 484.7376418334818,
13+
"0x1662d66493ba8d210c2d129fbab0e8de04fe9ede": 10527.934385469785,
14+
"0x330e75e1f48b1ee968197cc870511665a4a5a832": 342836.425842159,
15+
"0x4eac46c2472b32dc7158110825a7443d35a90168": 12.57671836505633,
16+
"0x8da02d597a2616e9ec0c82b2b8366b00d69da29a": 664.5818434131284,
17+
"0xb411b974c0ac75c88e5039ea0bf63a84aa7b5377": 10996.717090336022,
18+
"0xb4df44193a60586d9229bd6307a3241d2b04ce79": 21032.981023892036,
19+
"0xb72b37107db1ad520cab85204ef58a51981cb6ec": 11047.720813447437,
20+
"0xfce6abe45b291522cd0d7ceddf1dac2ee0283a6b": 1.4795932482483405,
21+
"0x00000000003b3cc22af3ae1eac0440bcee416b40": 0.0122519241894264,
22+
"0x007933790a4f00000099e9001629d9fe7775b800": 0.407012739926462,
23+
"0x0b54a3de68e0515cb85e44b4c688cb41e35335af": 0.03206862184118128,
24+
"0x0f6e4145e878ae9047d55c5f24c7337d27a9bc89": 27.477063829445914,
25+
"0x17fb4db24b8f1817bc33d6e167b105fd77599c28": 69.05252575384775,
26+
"0x1ba9c2d9053948290ae244ca97453dc29c55c1d6": 502.1316012665216,
27+
"0x1e7d6b88c0aff66d8f1d6b649bd3b369e71ad527": 20597.76911168972,
28+
"0x2741acb77d4e4d7fddd9144233f0a08f60171ad1": 2.5219541048166945,
29+
"0x3676eae386ce3a858e42e306383253b12ba81773": 525.5107312740611,
30+
"0x391b2e210870f605be93932236900bc873baaf39": 9.761072904157187,
31+
"0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad": 0.01193865460694,
32+
"0x4f764a08c66251e13bdd85b4bb0652b739736328": 113.26642824184077,
33+
"0x5290f0d929de438799377fa956dea76cdef318b6": 0.016176089265569574,
34+
"0x52b1dc1dc9f952269b777436c4f0d27f0db13f61": 69.42014559923305,
35+
"0x54d2562c8e9e970561a3cfd11e0b6e0977f135b8": 833.7299486156303,
36+
"0x6a72e2a8c95031bc2cc2755e5a30a145645e024a": 0.28568256958438043,
37+
"0x6ad11f36d051ccf5bc06bc53356549bbfa61a1a4": 128.66030344864484,
38+
"0x6d1305bb27232bc121c8075c92978edbba199c6a": 0.011033889502100111,
39+
"0x74be0af0bf7254328ddffc09425ff71d64a1a836": 0.001810778914570202,
40+
"0x7dfe56f30d0c8fe31f2e698920311be6f80a825b": 1.3195754442309942,
41+
"0x8c8f1be5dbdfa432bbfb33d6a13779e889d8ccf9": 44.612095842410184,
42+
"0x8da885d8a698843ca1f8a6cf38347990f0d84eb2": 251.6954745307712,
43+
"0x9008d19f58aabd9ed0d60971565aa8510560ab41": 188.6064252499903,
44+
"0x96f1daa32930933d503f93d270770f885de22d5c": 167800.91002693944,
45+
"0xaadad4324eefcf2e7e2c1b6bbbf0bad1f1775497": 1.5155063626333691,
46+
"0xb155b245c1a6fd99735b03ff1a8d8ecb165cce49": 0.000451682577892906,
47+
"0xb34860f27167ed8110991e04e3e7177a58c74401": 1017.5318498161549,
48+
"0xba386d72ee66b86c51ec92e75b6a32e2563bfd59": 0.09330379260106847,
49+
"0xbbc53022af15bb973ad906577c84784c47c14371": 10.11733638409458,
50+
"0xc2e0ccfd52326d9db2ca7fe8ef11018953244e97": 0.9083672442900731,
51+
"0xc5dcdeea5248b9a136ee23d092142e0b59d0b047": 0.007293414163708756,
52+
"0xcd4ebd768ccbe022274506f5e45d14fd90dc5be7": 132.74925474649393,
53+
"0xd8042a9bb8ff398408d494f44a466574d0856b0f": 0.028019794949992623,
54+
"0xe044be24efa511730d9f70766d56d0fb1ce7b966": 263.58788595973505,
55+
"0xe6932b2711df88e16a6e2a5223410d093c2a6bf2": 26.672609672907274,
56+
"0xe87e115b86cb00b39361a12ac917b17e82ce4f0c": 6705.661369479306,
57+
"0xf25041497082f71223e89d40efb75c66af87e408": 26.729772972783593,
58+
"0xfe88dd131d675874d8475ed6d3e3e92993f76d51": 54.7711055756292,
59+
};
60+
61+
const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
62+
const mferTokenAddress = "0xE3086852A4B125803C815a158249ae468A3254Ca"; // on Base
63+
const mferToken = await ethers.getContractAt("IERC20", mferTokenAddress);
64+
65+
const addressTOMFERArr = Object.entries(addressTOMFER);
66+
67+
for (const [address, amount] of addressTOMFERArr) {
68+
console.log(`⌛ Transferring ${amount} MFER to ${address} ...`);
69+
await mferToken.transfer(
70+
address,
71+
ethers.utils.parseEther(amount.toString())
72+
);
73+
console.log(`✅ Transferred`);
74+
}
75+
};
76+
export default func;
77+
func.tags = ["DistributeMFER"];

script/mfer-airdrop-calculate.ts

Lines changed: 303 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,303 @@
1+
// at block: 19541237
2+
// source: https://nftx.io/snapshot/
3+
const holdersSnapshot = [
4+
{
5+
Account: "0x029acd49d3aabc08402c84367c050dfd52b6c566",
6+
Token: "xMFERWETH",
7+
"MFER Balance": 1.6427596519722938,
8+
},
9+
{
10+
Account: "0x434f5325ddcdbbfcce64be2617c72c4aa33ec3e7",
11+
Token: "xMFERWETH",
12+
"MFER Balance": 0.2175161685144107,
13+
},
14+
{
15+
Account: "0x59de64f518f99b310e8e0014823b08e849eb7a24",
16+
Token: "xMFERWETH",
17+
"MFER Balance": 0.5739566626782264,
18+
},
19+
{
20+
Account: "0xc6cf5a020bcfc65c6f8181c04cbb5ef5050fe28e",
21+
Token: "xMFERWETH",
22+
"MFER Balance": 4.464914549726532,
23+
},
24+
{
25+
Account: "0x5ad6211cd3fde39a9cecb5df6f380b8263d1e277",
26+
Token: "SLP",
27+
"MFER Balance": 0.047638571895421554,
28+
},
29+
{
30+
Account: "0x1662d66493ba8d210c2d129fbab0e8de04fe9ede",
31+
Token: "xMFER",
32+
"MFER Balance": 1.0346540393179777,
33+
},
34+
{
35+
Account: "0x330e75e1f48b1ee968197cc870511665a4a5a832",
36+
Token: "xMFER",
37+
"MFER Balance": 33.69294296823258,
38+
},
39+
{
40+
Account: "0x4eac46c2472b32dc7158110825a7443d35a90168",
41+
Token: "xMFER",
42+
"MFER Balance": 0.00123600242757302,
43+
},
44+
{
45+
Account: "0x59de64f518f99b310e8e0014823b08e849eb7a24",
46+
Token: "xMFER",
47+
"MFER Balance": 0.27382239053466323,
48+
},
49+
{
50+
Account: "0x8da02d597a2616e9ec0c82b2b8366b00d69da29a",
51+
Token: "xMFER",
52+
"MFER Balance": 0.06531312445238971,
53+
},
54+
{
55+
Account: "0xb411b974c0ac75c88e5039ea0bf63a84aa7b5377",
56+
Token: "xMFER",
57+
"MFER Balance": 1.0807246075219052,
58+
},
59+
{
60+
Account: "0xb4df44193a60586d9229bd6307a3241d2b04ce79",
61+
Token: "xMFER",
62+
"MFER Balance": 2.0670587390156117,
63+
},
64+
{
65+
Account: "0xb72b37107db1ad520cab85204ef58a51981cb6ec",
66+
Token: "xMFER",
67+
"MFER Balance": 1.0857371015407047,
68+
},
69+
{
70+
Account: "0xfce6abe45b291522cd0d7ceddf1dac2ee0283a6b",
71+
Token: "xMFER",
72+
"MFER Balance": 0.000145400018223575,
73+
},
74+
{
75+
Account: "0x00000000003b3cc22af3ae1eac0440bcee416b40",
76+
Token: "MFER",
77+
"MFER Balance": 0.000001204082623226,
78+
},
79+
{
80+
Account: "0x007933790a4f00000099e9001629d9fe7775b800",
81+
Token: "MFER",
82+
"MFER Balance": 0.00004,
83+
},
84+
{
85+
Account: "0x0b54a3de68e0515cb85e44b4c688cb41e35335af",
86+
Token: "MFER",
87+
"MFER Balance": 0.000003151608654508,
88+
},
89+
{
90+
Account: "0x0f6e4145e878ae9047d55c5f24c7337d27a9bc89",
91+
Token: "MFER",
92+
"MFER Balance": 0.002700364006729657,
93+
},
94+
{
95+
Account: "0x17fb4db24b8f1817bc33d6e167b105fd77599c28",
96+
Token: "MFER",
97+
"MFER Balance": 0.006786276593339461,
98+
},
99+
{
100+
Account: "0x1ba9c2d9053948290ae244ca97453dc29c55c1d6",
101+
Token: "MFER",
102+
"MFER Balance": 0.04934799842945904,
103+
},
104+
{
105+
Account: "0x1e7d6b88c0aff66d8f1d6b649bd3b369e71ad527",
106+
Token: "MFER",
107+
"MFER Balance": 2.0242874083412006,
108+
},
109+
{
110+
Account: "0x2741acb77d4e4d7fddd9144233f0a08f60171ad1",
111+
Token: "MFER",
112+
"MFER Balance": 0.00024785013906664,
113+
},
114+
{
115+
Account: "0x3676eae386ce3a858e42e306383253b12ba81773",
116+
Token: "MFER",
117+
"MFER Balance": 0.051645629703778714,
118+
},
119+
{
120+
Account: "0x391b2e210870f605be93932236900bc873baaf39",
121+
Token: "MFER",
122+
"MFER Balance": 0.000959289176640593,
123+
},
124+
{
125+
Account: "0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad",
126+
Token: "MFER",
127+
"MFER Balance": 0.000001173295421573,
128+
},
129+
{
130+
Account: "0x4f764a08c66251e13bdd85b4bb0652b739736328",
131+
Token: "MFER",
132+
"MFER Balance": 0.011131487261288722,
133+
},
134+
{
135+
Account: "0x5290f0d929de438799377fa956dea76cdef318b6",
136+
Token: "MFER",
137+
"MFER Balance": 0.000001589737880784,
138+
},
139+
{
140+
Account: "0x52b1dc1dc9f952269b777436c4f0d27f0db13f61",
141+
Token: "MFER",
142+
"MFER Balance": 0.006822405176975611,
143+
},
144+
{
145+
Account: "0x54d2562c8e9e970561a3cfd11e0b6e0977f135b8",
146+
Token: "MFER",
147+
"MFER Balance": 0.08193649651028286,
148+
},
149+
{
150+
Account: "0x6a72e2a8c95031bc2cc2755e5a30a145645e024a",
151+
Token: "MFER",
152+
"MFER Balance": 0.000028076032178845,
153+
},
154+
{
155+
Account: "0x6ad11f36d051ccf5bc06bc53356549bbfa61a1a4",
156+
Token: "MFER",
157+
"MFER Balance": 0.01264435147380309,
158+
},
159+
{
160+
Account: "0x6d1305bb27232bc121c8075c92978edbba199c6a",
161+
Token: "MFER",
162+
"MFER Balance": 0.000001084377801451,
163+
},
164+
{
165+
Account: "0x74be0af0bf7254328ddffc09425ff71d64a1a836",
166+
Token: "MFER",
167+
"MFER Balance": 1.77957959242e-7,
168+
},
169+
{
170+
Account: "0x7dfe56f30d0c8fe31f2e698920311be6f80a825b",
171+
Token: "MFER",
172+
"MFER Balance": 0.00012968394497621,
173+
},
174+
{
175+
Account: "0x8c8f1be5dbdfa432bbfb33d6a13779e889d8ccf9",
176+
Token: "MFER",
177+
"MFER Balance": 0.004384343925005452,
178+
},
179+
{
180+
Account: "0x8da885d8a698843ca1f8a6cf38347990f0d84eb2",
181+
Token: "MFER",
182+
"MFER Balance": 0.024735881690214113,
183+
},
184+
{
185+
Account: "0x9008d19f58aabd9ed0d60971565aa8510560ab41",
186+
Token: "MFER",
187+
"MFER Balance": 0.018535677805472845,
188+
},
189+
{
190+
Account: "0x96f1daa32930933d503f93d270770f885de22d5c",
191+
Token: "MFER",
192+
"MFER Balance": 16.490973727972968,
193+
},
194+
{
195+
Account: "0xaadad4324eefcf2e7e2c1b6bbbf0bad1f1775497",
196+
Token: "MFER",
197+
"MFER Balance": 0.00014893945215643,
198+
},
199+
{
200+
Account: "0xb155b245c1a6fd99735b03ff1a8d8ecb165cce49",
201+
Token: "MFER",
202+
"MFER Balance": 4.4390018649e-8,
203+
},
204+
{
205+
Account: "0xb34860f27167ed8110991e04e3e7177a58c74401",
206+
Token: "MFER",
207+
"MFER Balance": 0.1,
208+
},
209+
{
210+
Account: "0xba386d72ee66b86c51ec92e75b6a32e2563bfd59",
211+
Token: "MFER",
212+
"MFER Balance": 0.000009169618879048,
213+
},
214+
{
215+
Account: "0xbbc53022af15bb973ad906577c84784c47c14371",
216+
Token: "MFER",
217+
"MFER Balance": 0.000994301690499669,
218+
},
219+
{
220+
Account: "0xc2e0ccfd52326d9db2ca7fe8ef11018953244e97",
221+
Token: "MFER",
222+
"MFER Balance": 0.000089271627660028,
223+
},
224+
{
225+
Account: "0xc5dcdeea5248b9a136ee23d092142e0b59d0b047",
226+
Token: "MFER",
227+
"MFER Balance": 7.16775024293e-7,
228+
},
229+
{
230+
Account: "0xcd4ebd768ccbe022274506f5e45d14fd90dc5be7",
231+
Token: "MFER",
232+
"MFER Balance": 0.013046201430498587,
233+
},
234+
{
235+
Account: "0xd8042a9bb8ff398408d494f44a466574d0856b0f",
236+
Token: "MFER",
237+
"MFER Balance": 0.000002753702005009,
238+
},
239+
{
240+
Account: "0xe044be24efa511730d9f70766d56d0fb1ce7b966",
241+
Token: "MFER",
242+
"MFER Balance": 0.025904632469967347,
243+
},
244+
{
245+
Account: "0xe6932b2711df88e16a6e2a5223410d093c2a6bf2",
246+
Token: "MFER",
247+
"MFER Balance": 0.002621304647881677,
248+
},
249+
{
250+
Account: "0xe87e115b86cb00b39361a12ac917b17e82ce4f0c",
251+
Token: "MFER",
252+
"MFER Balance": 0.6590124299982225,
253+
},
254+
{
255+
Account: "0xf25041497082f71223e89d40efb75c66af87e408",
256+
Token: "MFER",
257+
"MFER Balance": 0.002626922486761772,
258+
},
259+
{
260+
Account: "0xfce6abe45b291522cd0d7ceddf1dac2ee0283a6b",
261+
Token: "MFER",
262+
"MFER Balance": 9.999999999e-9,
263+
},
264+
{
265+
Account: "0xfe88dd131d675874d8475ed6d3e3e92993f76d51",
266+
Token: "MFER",
267+
"MFER Balance": 0.005382741148154243,
268+
},
269+
];
270+
271+
const MFERToDistribute = 670_000;
272+
// account for floating point error
273+
const adjustment = 0.000000002;
274+
275+
let totalVTokenSupply = 0;
276+
holdersSnapshot.map((holder) => {
277+
totalVTokenSupply += holder["MFER Balance"];
278+
});
279+
280+
const MFERPerVToken = MFERToDistribute / totalVTokenSupply;
281+
282+
const addressTOMFER: {
283+
[address: string]: number;
284+
} = {};
285+
holdersSnapshot.map((holder) => {
286+
if (!addressTOMFER[holder.Account]) {
287+
addressTOMFER[holder.Account] = 0;
288+
}
289+
addressTOMFER[holder.Account] += parseFloat(
290+
(holder["MFER Balance"] * MFERPerVToken).toFixed(18)
291+
);
292+
});
293+
294+
let calculatedTotalToDistribute = 0;
295+
Object.keys(addressTOMFER).map((address) => {
296+
calculatedTotalToDistribute += addressTOMFER[address];
297+
});
298+
const discrepancy = MFERToDistribute - calculatedTotalToDistribute;
299+
if (Math.abs(discrepancy) <= adjustment) {
300+
addressTOMFER[Object.keys(addressTOMFER)[0]] += discrepancy;
301+
}
302+
303+
console.log(addressTOMFER);

0 commit comments

Comments
 (0)