EGP#: 22
Title: Removal of Non-Contributor Grants from the Vesting Vault
Author(s): @cpstl
Type: Protocol Proposal
Status: Proposed
Date Proposed: <yyyy-mm-dd>
Date Ratified: <yyyy-mm-dd>
EGP-22 is for removing the Element Finance team-allocated token grants for those who left Element Finance before their vesting cliffs, for team Members who partially vested, or for team members who left before the vesting dates were reached.
This proposal formalizes a solution for the removal/reclaiming of Element Finance team members-allocated token grants who departed prior to reaching the vesting vault smart contract-defined vesting cliffs, partially vested, and/or before the vesting dates were reached.
These Element Finance team-allocated token grants were distributed during the governance launch of Element DAO on March 31 of 2022. The vesting cliff was defined as 1-year from the launch date and the token vesting schedule defined was as three years after the launch date.
The purpose of this EGP is to regain the token allocations that were given to previously employed Element team members, allowing Element Finance to be able to award new token grants to new employees and contributors.
Important note: Neither Element Finance, Inc. nor Element Finance Team members will vote on this proposal. Furthermore, Element engineers will provide purely technical comments only; they will not provide any statements on the wisdom or appropriateness of the proposal.
The VestingVault contract holds grants for various holders of the ELFI governance token. For reasons stated in the Motivation section, some grants need to be adjusted. This adjustment takes the form of updating two variables: allocation and range. allocation is what it sounds like, the number of tokens awarded after the grants vest. range refers to the specific token range to which the grants apply. As the allocations are reduced, the ranges need to be updated as well. If there is no range specified, it is left unspecified. Furthermore, as allocations are reduced, we update the unassigned value by the amount the allocation is reduced. This proposal makes no assumption about the future use of the now unassigned tokens in the VestingVault will be used.
As a part of this proposal, a contract will be used to perform the necessary modifications to existing token grants. This contract can be viewed here: https://github.com/sentilesdal/council/contracts/vaults/UnfrozenVestingVault.sol
Only the method that will be called is reduceGrant().
Scripts in the above-mentioned repository will be used to deploy the upgraded contract and create and execute the proposal.
The basic idea of the proposal is that, from the Timelock contract, the following three actions will be performed on the VestingVault:
allocation to the new amount. If the new value is zero, delete the grant. If a range is specified, update that value as well.You can see the proposed values here for the creation of the proposal, assuming the proposer uses only the locking vault to satisfy the minimum voting power threshold to create the proposal.
proposalId 4
votingVaults [ '0x02Bd4A3b1b95b01F2Aa61655415A5d3EAAcaafdD' ]
extraVaultData [ '0x00' ]
targets [ '0x81758f3361A769016eae4844072FA6d7f828a651' ]
callDatas [
'0x88b49b8323a321f19d23a56e2a186b370738326477c0d9a5c6e7ecbdf1416455964e61b9'
]
proposalHash '0x80b54ecedfb8f4bddb77eda29bea0fe077ad1dfdd10be1e92f75f3e08b6a2869'
targetsTimeLock [
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A',
'0x6De73946eab234F1EE61256F10067D713aF0e37A'
]
calldatasTimeLock [
'0x74474d280000000000000000000000001d13ff25b10c9a6741dfdce229073bed652197c7',
'0xf9c251a7000000000000000000000000561c1693fd7c874763f99d0f456c0d2353c85e26000000000000000000000000000000000000000000002e69aae2e8c354700000',
'0xf9c251a70000000000000000000000007c9c99a9c0bb31c054de1bd9af546db10e35785b000000000000000000000000000000000000000000000f50f3528cc0b22d0000',
'0xf9c251a70000000000000000000000003a543655e484d9ad9ada138170254f5880b695ce0000000000000000000000000000000000000000000000000000000000000000',
'0xf9c251a70000000000000000000000009814ca52e5235e9ea7709475893645bed9a9cf430000000000000000000000000000000000000000000000000000000000000000',
'0xf9c251a7000000000000000000000000b603613b9e3f76ab26ce2a259f1db8ea5e9dc5950000000000000000000000000000000000000000000000000000000000000000',
'0xf9c251a700000000000000000000000046aa35190959c7a639ada37a99068b6740a0a5ed0000000000000000000000000000000000000000000000000000000000000000',
'0xf9c251a700000000000000000000000008627fcb1edd7006b9f71fbd5b0ec91b4d8dd50a0000000000000000000000000000000000000000000000000000000000000000',
'0xf9c251a70000000000000000000000002592998309c9a89d9eaaf7cf7cfa94db8ba877030000000000000000000000000000000000000000000000000000000000000000',
'0xf9c251a7000000000000000000000000b0ad0eea2061d1b699e6c0d353fdee59f40262bb000000000000000000000000000000000000000000006517c1dfd2e9bfce0000',
'0xf9c251a7000000000000000000000000cf0fb739fb119b4e41e872a2a1223832900f036100000000000000000000000000000000000000000000137e4cd7a1d1cd270000',
'0x74474d28000000000000000000000000716d4e863536ac862ad34bc4ecacba07d8831bea'
]
callHashTimelock '0x23a321f19d23a56e2a186b370738326477c0d9a5c6e7ecbdf1416455964e61b9'
lastCall 15964852
ballot 0
The code will be dry-run using Ethereum mainnet forks. Values will be inspected to make sure that they make sense and yield the intended results.
The following should be true AFTER the proposal is executed:
allocation and rangeThe code for this proposal is publicly available for the community to review at https://github.com/sentilesdal/council. Engineers at Element Finance, Inc have conducted internal reviews of both the smart contract updates and the code used to generate the proposal. After the proposal is made public, there should be ample time to allow the community to audit the code.
Draft.
Proposed.