This EP will initiate the Streams for Service Providers as selected on EP4.9 Draft Discourse link
EP 4.7 proposed the concept of Streams for service providers and set its budget at $3.6M per annum. EP4.9 selected the following Service providers and their annual budget:
Service Provider Name | Annual Stream |
---|---|
ETH.LIMO | $500,000.00 |
NameHash Labs | $600,000.00 |
Resolverworks.eth | $700,000.00 |
Blockful | $300,000.00 |
Unruggable | $400,000.00 |
Wildcard Labs | $200,000.00 |
Ethereum Follow Protocol | $500,000.00 |
Namespace | $200,000.00 |
UNICORN.ETH | $200,000.00 |
The Metagov Working Group has decided this will be implemented in the following manner:
[1]: USDC has a precision of 6 decimal places, but SuperUSDC has a precision of 18 decimals. The value of 0.114155251141552512 per second corresponds to approximately 9863.01 USDC per day and in 3,600,000.000000000018432 USDC per year in a non-leap year. In leap years (such as the current one) it will mean an extra $9.8K is paid in the 29th of February.
[2]: Autowrapper is a series of contracts developed by superfluid. When pinged (and anyone would be able to ping it), if the amount of tokens that the DAO has wrapped is below the lower limit, it will automatically wrap new tokens in order to keep the stream running. The goal is to reduce smart contract risk. If Superfluid is somehow hacked, ENS will not lose more than the upper limit set here (about 50 days worth of funds). If both Superfluid AND the autowrapper are hacked at the same time, ENS cannot lose more than the maximun USDC allowance (18 months worth of funds).
[3]: Any capital that remains in the pod (due to the difference between the day this EP is executed and the day the last Service Provider stream is active) will be still considered under the DAO's ownership and will be used only as a buffer (if autowrapper fails, we will have some weeks to resolve it without interrupting payments) and to solve any logistical issues with service providers. It will NOT count towards Metagov's budget nor it will it be used to any other purpose than the service provider management.
We will now details the transactions to be executed on this EP:
Operation | Target | Decoded Calldata | Raw Calldata |
---|---|---|---|
approve USDCx SuperToken contract to transfer 300k USDC | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 (USDC) | function approve(address 0x1BA8603DA702602A8657980e825A6DAa03Dee93a, uint256 300000000000) |
0x095ea7b30000000000000000000000001ba8603da702602a8657980e825a6daa03dee93a00000000000000000000000000000000000000000000000000000045d964b800 |
wrap 300k USDC to USDCX | 0x1BA8603DA702602A8657980e825A6DAa03Dee93a (Super-USDC) | function upgrade(uint256 300000000000000000000000) |
0x45977d03000000000000000000000000000000000000000000003f870857a3e0e3800000 |
start flow to Safe with the flowrate of 0.1141... per second | 0xcfA132E353cB4E398080B9700609bb008eceB125 (Superfluid) | function setFlowrate(address 0x1BA8603DA702602A8657980e825A6DAa03Dee93a, address 0xB162Bf7A7fD64eF32b787719335d06B2780e31D1, int96 114155251141552512) |
0x57e6aa360000000000000000000000001ba8603da702602a8657980e825a6daa03dee93a000000000000000000000000b162bf7a7fd64ef32b787719335d06b2780e31d100000000000000000000000000000000000000000000000001958f989989a980 |
approve auto-wrap for 5.1M | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 (USDC) | function approve(address 0x1D65c6d3AD39d454Ea8F682c49aE7744706eA96d, uint256 5100000000000 |
0x095ea7b30000000000000000000000001d65c6d3ad39d454ea8f682c49ae7744706ea96d000000000000000000000000000000000000000000000000000004a36fb03800 |
create auto-wrap schedule | 0x30aE282CF477E2eF28B14d0125aCEAd57Fe1d7a1 (Autowrapper) | function createWrapSchedule (address 0x1BA8603DA702602A8657980e825A6DAa03Dee93a, address 0x1D65c6d3AD39d454Ea8F682c49aE7744706eA96d, address 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, uint64 3000000000, uint64 1814400, uint64 4320000 |
0x5626f9e60000000000000000000000001ba8603da702602a8657980e825a6daa03dee93a0000000000000000000000001d65c6d3ad39d454ea8f682c49ae7744706ea96d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000b2d05e0000000000000000000000000000000000000000000000000000000000001baf80000000000000000000000000000000000000000000000000000000000041eb00 |
All contracts have verifiable code. You can use tools such as the Calldata decoder to verify the correctness of the calldata and etherscan to look deeper into them. You can also simulate the transactions yourself using this repo.
The terms for the createWrapSchedule are the address of the superToken (super-usdc), the address of the Strategy contract, the address of the base token (USDC), the expiry (set to the far future), lowerLimit and upperLimit. These last two are set in seconds and mean that if, when the autowrapper is pinged, the stream has less than 21 days in it's runway, then it will automatically wrap 50 days worth of funds.