TL;DR
This proposal is to optimize Lido Contributors Group’s multisig funding operations. It describes a new version of the Easy Track top-up setup of contracts. This version is an upgrade of the existing Easy Track factories with limits, but it allows working with a list of tokens instead of a predetermined one.
Context
Currently, Lido DAO uses Easy Track motion setups with limits to make payments to Lido Contributors Group committees (PML, ATC, RCC). Three Easy Track factories allow topping up the committees’ multisigs in DAI:
- PML TopUpAllowedRecipients: 0x4E6D3A5023A38cE2C4c5456d3760357fD93A22cD
- ATC TopUpAllowedRecipients: 0x67Fb97ABB9035E2e93A7e3761a0d0571c5d7CD07
- RCC TopUpAllowedRecipients: 0x84f74733ede9bFD53c1B3Ea96338867C94EC313e
Problem Statement
For convenience, the Committees plan their budgets in USD.
USD- and stablecoin-nominated operations of Lido DAO used to be set up and maintained in DAI.
At the moment of writing, Aragon Agent holds 1,397,826 DAI, 2,245,134 USDT, and 366 USDC. With the Treasury Management Committee set up, the portfolio of stablecoins held in Lido DAO Treasury could change. The Committees will need to request from the Treasury not only DAI but also other stablecoins. The problem is that this is only possible by deploying separate Easy Track setups separately for each token. But in this case, counting actual expenses made in various stablecoins towards the single limit becomes impossible.
Proposed solution
To maintain the steady flow of operations, Lido Contributors improved the existing Easy Track top-up setup to make stablecoin-nominated payments under the single onchain-maintained limit.
This setup of contracts works with a registry of tokens. The registry is defined during deployment and can only be changed through an on-chain vote in the future. The initial list of tokens will consist of DAI (0x6b175474e89094c44da98b954eedeac495271d0f), USDT (0xdac17f958d2ee523a2206206994597c13d831ec7), and USDC (0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48).
The mechanism for checking limits remains the same: before creating and executing each motion, the contracts check whether expenses for the current period do not exceed the established limit. However, the new setup has an improvement: it checks whether the payout token is allowed (pre-placed in the registry) and normalizes the amount (converts it to eighteen digits in decimals).
Next steps
The new contract setup is currently going through an audit. The audit report by Oxorio will be shared in the comments section. On-chain voting will start after receiving the final report.
The new stablecoin-nominated setups will use AllowedRecipientsRegistry
contracts from the DAI setups. These contracts hold all limit and recipient parameters (limit, limit period, spent amount in the current period, allowed recipients registry). Thus, the transition will be seamless.
Addresses of new contracts will be shared in the comments under the post when they are deployed.
In the upcoming on-chain vote, new factories will replace the Easy Track DAI factories for PML, ATC, and RCC multisigs.
Single transfer permissions
And a few more words about the required changes for transfers in new tokens.
Easy Track uses EVMScriptExecutor
contract to enact motions. The EVMScripExecutor
was granted the Aragon ACL permissions to make token transfers through Aragon Finance app.
The current single transfer limits for the EVMScripExecutor
are (forum post):
- 1,000 ETH
- 1,000 stETH
- 5,000,000 LDO
- 2,000,000 DAI
Since the new setups will transfer USDT and USDC, the subsequent on-chain voting will also have items intended to add permissions to transfer up to 2,000,000 USDT and 2,000,000 USDC to the existing limits.