Skip to content

Commit

Permalink
Add epoch 5 incentive payouts
Browse files Browse the repository at this point in the history
  • Loading branch information
0xkorin committed Jan 29, 2024
1 parent da35bf6 commit 065903e
Show file tree
Hide file tree
Showing 3 changed files with 867 additions and 0 deletions.
110 changes: 110 additions & 0 deletions scripts/votes/5.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ def main():
total, votes = read_multiple_choice('votes/5-weight.csv', CHOICES)
redistribute(total, votes)

total, votes = read_multiple_choice('votes/5-inclusion.csv', 3)
incentives(total, votes)

def redistribute(total, votes):
assert sum(PREV_WEIGHTS) == 10000
results = multiple_choice_result(votes, CHOICES)
Expand Down Expand Up @@ -48,3 +51,110 @@ def redistribute(total, votes):
delta = w - PREV_WEIGHTS[i]
sign = '+' if delta > 0 else ''
print(f'{ASSET_NAMES[i].rjust(7)}: {w/100:.2f}% ({sign}{delta/100:.2f}%)')

def incentives(total, votes):
print('\nincentives')
mi = Contract(MERKLE_INCENTIVES)

# incentive for including apxETH
id = '0x0501000000000000000000000000000000000000000000000000000000000000'
amts = [
30_000000000000000000,
]
tokens = [
'0xc55126051B22eBb829D00368f4B12Bde432de5Da' # BTRFLY
]
ids = [f'{id[:-1]}{i}' for i in range(len(amts))]
bootstrap = Contract('0x7cf484D9d16BA26aB3bCdc8EC4a73aC50136d491')
staking = Contract('0x583019fF0f430721aDa9cfb4fac8F06cA104d0B4')
ts = 19050000
bootstrap_weight = staking.vote_weight(bootstrap, block_id=ts) * UNIT // bootstrap.deposited(block_id=ts)

yeth_price = 2250
prices = [404]
total_usd = 0
for amt, price in zip(amts, prices):
total_usd += amt / UNIT * price

incentive_apr = total_usd * bootstrap_weight / total * 365 / 28 / yeth_price
print(f'epoch incentive vAPR: {incentive_apr*100:.1f}%')

leaves = []
for token, amt in zip(tokens, amts):
l = []
for account, vote in votes.items():
l.append([account, token, amt * sum(vote) // total])
leaves.append(l)

trees = []
roots = []
for l in leaves:
tree, root = build_tree(l)
trees.append(tree)
roots.append(root)

print(f'accounts: {len(votes)}')
for root in roots:
print(f'root: {root.hex()}')

proofs = {}
for j, l in enumerate(leaves):
for i, leaf in enumerate(l):
account, token, amt = leaf
if account not in proofs:
proofs[account] = []
proofs[account].append({
'vote': ids[j],
'incentive': token,
'amount': amt,
'proof': build_proof(trees[j], i)
})

# refund incentive for including mpETH
id2 = '0x0501000000000000000000000000000000000000000000000000000000000001'
account1 = '0xEA26e7fC8ABE2D8Bd3A84ED207Ad9E0560E29901'
amt1 = 10_000_000_000 + 100_000_000
account2 = '0x962d00611208f83175dA312277925b88E44708c7'
amt2 = 2_500_000_000
token = '0xdAC17F958D2ee523a2206206994597C13D831ec7'

leaf1 = [account1, token, amt1]
leaf2 = [account2, token, amt2]
tree2, root2 = build_tree([leaf1, leaf2])
print(f'refund root: {root2.hex()}')
if account1 not in proofs:
proofs[account1] = []
if account2 not in proofs:
proofs[account2] = []
proofs[account1].append({
'vote': id2,
'incentive': token,
'amount': amt1,
'proof': [tree2[0][1].hex()]
})
proofs[account2].append({
'vote': id2,
'incentive': token,
'amount': amt2,
'proof': [tree2[0][0].hex()]
})

f = open('votes/5.json', 'w')
json.dump(proofs, f, indent=2)
f.write('\n')

# test claiming
mgmt = accounts[mi.management()]
alice = accounts.test_accounts[0]
alice.transfer(mgmt, UNIT)
for id, root in zip(ids, roots):
mi.set_root(id, root, sender=mgmt)
mi.set_root(id2, root2, sender=mgmt)

print('test claims')
for account, acc_proofs in proofs.items():
for proof in acc_proofs:
incentive = Contract(proof['incentive'])
pre = incentive.balanceOf(account)
mi.claim(proof['vote'], proof['incentive'], proof['amount'], proof['proof'], account, sender=alice)
assert incentive.balanceOf(account) - pre == proof['amount']
47 changes: 47 additions & 0 deletions votes/5-inclusion.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
address,choice.1,choice.2,choice.3,voting_power,timestamp,author_ipfs_hash,reason
0xb957DccaA1CCFB1eB78B495B499801D591d8a403,,1,1,0.3406446066529477,1705586019,bafkreicjggajsbzqumgccubp76f7ymn76ukd5mzuxgult4e2uusmy73xeq,""
0x7AAEE144a14Ec3ba0E468C9Dcf4a89Fdb62C5AA6,,1,1,2.1887644290728843,1705591415,bafkreib5mjb2jsdey62avoyw7dkamma7vv2yxtihjbxwix7yynm7l4xpoi,""
0xeDf2cfD0A8da2891eA0f2b187EBa298A366A100d,,,1,2.1985042964912607,1705600207,bafkreib4nt2kcjpcd44gsoyuhjlf5akczitplms4ynd6mxbpaefgdkt2pu,""
0x962d00611208f83175dA312277925b88E44708c7,,1,,55.87248586083045,1705602763,bafkreiff27qb6lyub5sbf52f74ojrcye4vhdqmkuinq5xl2gbozmcgevdq,"good incentives, good project, great APY"
0x43D3C255711Eb42148901d2c6AB50FD50F00563d,,1,,96.04980795293082,1705617121,bafkreicrazujfgebfonsiughxupyzzt6wjyzxxwo7oln5o5xhtxdxodeoq,""
0xD619F816156EFfABF9dDab313cff6b46cad3Fbdd,,,1,0.06079612296288285,1705629943,bafkreifuhmafinlhfzuywsdoumlmxmzfklmo6kebhwtvgsuf37ij67dd6i,"Much higher staking yield than other LSTs. long-standing devs. Much higher overall benefit than the fraction of the bribes for mpETH."
0x906AfE716e75fBB69B22cAD01Ab19b43de32308b,,,1,2.302358503641296,1705634492,bafkreiclpttksazpxrgawdwxjwkoidbgt47pnefhqftr55mcpcvqiorrt4,""
0xa8CC9BCf39E981e5629731A18e87A7FCaf4D72B3,1,,,10.943822145364422,1705636393,bafkreihol7c232nz4wd54d3utpqa2n7q674w5a3ntvwub7plnuyb4763nm,"Should have better incentives"
0x9d8d7220D060fd12Ca33336B7239688e366327dE,1,,,0.7882525450875032,1705640533,bafkreicvumk2zokvkme65lc64r5iwtlnlcsangazkbknz7fzsplzv4kpnm,""
0xFc4605B7046B3Fb512B69ae91918b9305F1C4254,1,,,3.1240153393105725,1705670831,bafkreihh47w6mccm6gotbmyn5wq3nrktaxi6utqnkly473wcgish6ah5uy,""
0x3Ba6eB0e4327B96aDe6D4f3b578724208a590CEF,,1,,0.43775288581457683,1705682347,QmcCnp6Pfh8xNsSwxWB2xWUcyk9umkuPp7RnjvRmQshJ2M,""
0x3295e39F9Ea9Db98929B52f076acb7D1535A23Cb,,,1,3.6479407151214738,1705690704,bafkreielnreayc6d4j4indz52e2x6oqyq52mc5gwwmpzoonayhtr5zzct4,""
0x08e166BDdc849CFd91084e828B5096085e8e0875,,2,1,0.30573036875937376,1705691168,bafkreiek4hkgofujnrkf7v4foetxjl76c4fbp45bv6cjolprjqxspmzjue,""
0x40Fd143A27c58a93D1d4C3Ee19603426180a592C,1,,,50.04265155830611,1705699197,bafkreicdkpqgvbjq2fzyyd3flbsimkaiu67whylumu36btoajxybq7nl54,""
0x2f463642fa60CB1f1fd1c57af25B34b7a9A99586,,,1,127.85589929410747,1705701936,bafkreia6cg7rrhkbjqtf4h3skcal2puzxbbfcdogyudh4z2ofdjq6xbjfa,""
0x20216577f78eE7D6d5b2b962C744a950efc77437,,,1,24.076408719801726,1705732185,bafkreihgh4pjo2hpdwme2puwkykdeyx7r6qcen47v2pctc5rzgsk6mbqe4,""
0x2951B1F7058bd2C05F01954002C450BaC0873847,,1,1,0.03647940715121474,1705755286,bafkreibjxyyruxby7z33qbe3tfpfyspedhxh6bs3ybg3622dzyk5xwqoxm,""
0x55a4F9d5d8D944F2485a9d3Dc335A6936FC40677,100,,,8.764029338891241,1705761070,bafkreidhtz2hyo7pq3orpntsoc4tugad4gugj4rlsfoprjoq7r47ackupy,""
0x1473A0d2BEb958077382fFE1d0ef83946f8147FB,,,1,0.679391781760884,1705761157,bafkreibxohc62hzkmd5njigmklhclxj2osap3u6o6imqaqfjxf3wj5dbuu,""
0x8a2D44D281a37D78753F4e5771854f9F296291d0,,,1,7.417557473957157,1705761170,bafkreihnhrgvtrjhf4ut7ygznobxd3nc74l34fpwcyt4zpqriby4qctaom,""
0x7115b222b2CcdE533A27A75D3E8629832E6DC1e3,1,,,15.995836168420777,1705780284,bafkreicgqutccqdyn47zd6wbyh2meqpexxsjtnqa4nba4ezvl4k7wylxwu,""
0x53C40473DcdFd927C4201cCFE24E314a7D7C3584,,,1,0.329804202013309,1705781902,bafkreicp5x6eimqm2hsss2oettahwfwbclf4nwccl53g7nuh6kpupvny2y,""
0x19636BF1F0bB0e813D316A73Cc91f03153b6Db41,1,,,1.4591762860485895,1705789209,bafkreichlu6xbgy5aejfj7zbkxbrwngdeo7kc5isgxeqigjbjbjg7bkqxi,""
0x57ef2b98306D2c98F2FcEbBDd05090c75982AF72,,1,1,12.862151173298058,1705798494,bafkreia3cp2t3iiymip2qemf5kgjab6grlbkcvvoyq7b5jgyj74rhz7lxe,""
0x6fb737D1Ebb73cda6CFA36Fd16D9273065D1b084,,1,,0.5628316228946012,1705811725,bafkreiam5ddc7lewhxsbkiom3mbj3y6u6atkcmay4rc77cbdl5tw6ymjke,""
0xdAb4cc54a8BeA0cd7833c9a453E7F4C996b3D100,,,100,11.213173569709609,1705893505,bafkreienym5bzau4x5o3gf4b6ex4rtqykm7tzzbefpdflburflxinswbkm,""
0x9d560c8963e8758C1dBf9BeD87D0ff17764b1cA4,,100,,18.807257908625836,1705910953,bafkreidahcyo7rhxrp5lhrkctu3xfazu5nxoclnl6sx66jgo7khazzvity,""
0xEa04a9Fe2CEf51B504e7da8cf1b859454AE27030,,1,1,5.107117001170064,1705928675,bafkreicmyc2q3ffn436wlkffvdzwepxpdamlsfwl6ugry534dxpzq3hrre,""
0xE44E071BFE771158a7660dc13daB67de94f8273c,,,1.3,1.258388219633089,1705931292,bafkreif7fz5m6chd7slyhuo7bzxm6rhi4jrqyvhar6tbqh33dnel7atxim,""
0x9ddCc3A4EA7f872531590eEd12d69E63D108091D,,,0.78,0.7767060258074817,1705931371,bafkreidnc66w7oi2m7e3d23x4rmi466x7zx5wxhaz3rto2f2qsxut6rqoe,""
0x029F1c62662CbBfe79CE55B285FeE4E2db081a06,,1,,32.83318044444431,1705940325,bafkreieibtylhqaeevpizwmzesv6ngnfk3txkgmjbrevgavrucju6wyegq,"I see highest bribe, I vote for protocol. So easy and decentralized yum yum"
0xE53D3f2B99FE0Ed6C05977bC0547127836f0D78d,,1,,0.6270386505445856,1705973845,bafkreigirvammaz52kisde543h4ulhgcq7ge7lv6y5x6p5ezf6bl2qfooe,""
0x2F8742738E55B7e15d8c1AA213Af1Ff9289C7C6B,,,100,17.99055341031316,1705978896,bafkreib34nq7zfw4ewlmk4txma7zsnbuhq4ejcr24qmnxlv3zf24oy7cqa,""
0x5bA6624Ed97EAdDC2a2b5778A2771716Eb4Ca96A,,,1,14.591762860485895,1706001644,bafkreid3ydx6ejwag5qsuljt4z5b3jqt7cspb6mvvphgn5riybo2ih56xy,""
0x7BFEe91193d9Df2Ac0bFe90191D40F23c773C060,,1,9,36.47940715121474,1706025173,bafkreiha52t42575brkmx4ynupjh43majcx4xd5j6mdyz4tzi5y263uhtm,""
0x05E959BA29a4ff2FbfC650da9048C81D6cD310E3,,1,,66.43914854640502,1706053378,bafkreie57ymyhbqmn4bm7pfgzguqh2ivxftbsgvvx2mmd2cdtj3wmmiylq,""
0x12478d1a60a910C9CbFFb90648766a2bDD5918f5,1,,,36.47940715121474,1706092306,bafkreic3npyzaectt5fnv5nqplkuyuoge26ubx67cw2kk7g3okuoymt5f4,""
0x29fF3B5Ad788477a460873dD1FCF78aE95cA565a,1,,,3.6479407151214738,1706108368,bafkreig2ibhrdkn3iwnw5qnlppocmdsw4fh3ink6hlvmwo3ed2l2eg2mgu,""
0x8Ff8aBa1C8bd3c607a650D15ff1E3662aac92B4B,,25,75,0.5288740945907331,1706111134,bafkreihpyjm4bna4tzhtlxcflydh7545qg77uprthz7xjvneagdogxj6fq,""
0x047064A07eAE3511751Eaa688C7BDa6EC494c99e,1,,,43.81644910599994,1706113507,bafkreicy6c5nnhs2uo3bhpny3q6wdm2k6g66dwh2bf7cktjq6lkojpml6y,""
0x4d0bddEc656ED7C3b33AB581b6f14c9ab5C205d4,,,1,266.2996722038676,1706114444,bafkreif3k52gmtqnp5gm3ba5lxwtde3wfue7mx3zkk5hrhxxv7tdacqzsm,""
0xb8145A317275E2B20A78a7615e2fCbaEcC90Bf28,,,100,1.7874909504095222,1706119524,bafkreiax3uq2y3unax5sl6xwnpwjoykrjrzh2obkp7ff5yupzd3tjyk5mu,""
0x992dac69827A200BA112A0303Fe8F79F03c37D9d,,,1,110.91174628829995,1706122419,bafkreihyqwibaekehkbikjtlj62fsphylobai3h32kgifmlpd6xuskfe5e,""
0x4570d5b4177Cf209944e8E3fB1f2A77021ffD5C5,,,1,26.507704298802047,1706122462,bafkreihkdnogqqsk3hfukampww5hficdbzzu4bmty7bmcsbl2ukqbcwfp4,""
0x8482a0F31050416AD4344C98bcdb938e9cD3DEa2,1,,,29.466194019053532,1706134580,bafkreiboecziks3cy57pdeoawoftgo3xlr6fojzkgsj36gil5rt3bmf7uu,""
0x3864ca7A0D5B73B58C77ac79c25DB823CeBF910D,,,48,0.35867754240989447,1706140682,bafkreid5xffufuxo7qqbkgiglrrzfonp7wdbiajl73frfpz3xjok7jgp5m,""
Loading

0 comments on commit 065903e

Please sign in to comment.