This repository has been archived by the owner on Nov 1, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* init * Update src/20231022_AaveV3_Eth_ACIPhaseII/AaveV3_Ethereum_ACIPhaseII_20231022.sol * payload deployed --------- Co-authored-by: Harsh Pandey <[email protected]>
- Loading branch information
1 parent
b1ae99b
commit 3d42578
Showing
4 changed files
with
253 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
--- | ||
title: "ACI Phase II" | ||
author: "Marc Zeller - Aave-Chan Initiative" | ||
discussions: "https://governance.aave.com/t/arfc-aci-phase-ii/15138" | ||
--- | ||
|
||
## Simple Summary | ||
|
||
This ARFC proposes the continuation of the collaboration with the Aave-chan Initiative (ACI) for an additional period of 180 days, with a proposed budget of 375k GHO. | ||
|
||
## Motivation | ||
|
||
The ACI has demonstrated significant value to the Aave ecosystem across multiple fronts. This proposal seeks to extend our collaboration, focusing on three primary axes: Skyward, Growth, and Representation. | ||
|
||
Skyward has emerged as a cornerstone of Aave's governance, producing 90 AIPs in 180 days. This averages out to **[one AIP every other day](https://dune.com/alice_rozengarden/aip-creation-in-2023)**, a testament to the relentless dedication and efficiency of the ACI. Beyond numbers, the ACI has fostered a spirit of collaboration within the Aave ecosystem. | ||
|
||
We've co-authored proposals with the vast majority of active DAO service providers, recognized delegates and some active community members. Moreover, our doors have always been open to third-party protocols. By actively welcoming and collaborating with them, we've streamlined the governance process, ensuring that Aave remains inclusive and cohesive in its approach. | ||
|
||
**What to expect for phase II?** | ||
|
||
Continuation & extension of the Skyward services. | ||
|
||
### Growth: | ||
|
||
The ACI operates under a guiding principle of "**Continuous incremental improvement.**" | ||
|
||
While we acknowledge that we might not be the driving force behind tech breakthroughs like a potential Aave V4 or, recently, the Governance V3 AIP, our daily commitment is unwavering. We aim to make the protocol 1% better every single day, one AIP at a time. It's through these consistent, small steps that we believe Aave can maintain its leadership in the DeFi space. | ||
|
||
Our efforts have already borne fruit. The implementation of offboarding plans for assets like BUSD & TUSD stands out. These initiatives not only enhanced protocol safety but also turned a profit, generating close to 1M$ for the DAO. This revenue, in itself, has multiple times repaid the investment made in the ACI. Furthermore, our vigilant oversight of the DAO's finances has ensured efficiency. We've curbed overspending, optimized budgets, and deterred proposals that didn't align with Aave's best interests, saving the DAO a 7-figure amount & ensuring every GHO & DAO $ is well spent. | ||
|
||
**What to expect for phase II?** | ||
|
||
The ACI will continue to focus on our continuous incremental improvement doctrine, being a driving force in Aave protocol growth and BD. | ||
|
||
For Phase II the main focal points will be on Liquid Staking Tokens diversity with the support of onboarding new assets, GHO growth and adoption with support of synergies and the integration of GHO in both onchain protocols, ramps & L2s. | ||
|
||
### Representation: | ||
|
||
The ACI has actively engaged in both internal and external representation for the Aave DAO. | ||
|
||
**Internal Representation**: | ||
|
||
Prior to the ACI's involvement, the DAO too often encountered challenges, such as proposals not reaching the required quorum. Governance activity was subdued, and the operations were notably insular. The ACI introduced several key initiatives: | ||
|
||
- **Orbit Program**: The ACI allocated ~20% of its budget to the Orbit program, focusing on diversity. This program compensates recognized delegates for their contributions, leading to increased participation rates and improved diversity metrics. The frequency of proposals failing due to a lack of quorum has decreased. With the now DAO-funded Orbit program, **the DAO has enshrined these benefits** | ||
- **Governance Guidelines**: The ACI contributed to the establishment of the Aave DAO governance guidelines. This effort aimed to bring clarity, predictability, and efficiency to DAO governance. The "**Minimal Viable Bureaucracy**" ACI Doctrine, ensures a balance between structured governance and accessibility. | ||
- **Support for New Delegates**: The ACI has extended support to emerging delegate platforms, co-authoring proposals and providing guidance. This collaborative approach has enriched the DAO's ecosystem. | ||
|
||
**What to Expect from Phase II?** | ||
|
||
We will continue contributing to the Aave DAO frameworks and supporting DAO active participants seeking a balance between organization & accessibility. | ||
|
||
We will also delegate engineering resources for service providers via mini-dapps such as the recent [acistreamcollector.com](http://acistreamcollector.com), which allows no code claims of DAO streams. | ||
|
||
**External Representation**: | ||
|
||
Externally, the ACI has been a voice for the Aave DAO in various capacities. | ||
|
||
- **Event Participation**: The ACI has participated in and sponsored several global events to share insights and collaborate with industry peers. In 2023, our engagements included: | ||
- Web3DNA (Paris) | ||
- EthDubai 2023 | ||
- Prague DeFi Summit/EthPrague | ||
- Stable Summit (Paris) | ||
- EthCC[6] (Paris) | ||
- Dappcon Berlin 2023 | ||
- LëtzStake (Luxembourg) | ||
- EthLisbon | ||
- Devconnect Istanbul | ||
A detailed list of our engagements can be found [here](https://www.notion.so/f676c1ce96f44c648ef2a40f7f1bb442?pvs=21). | ||
- **Regulatory Engagement**: The ACI's founder holds the position of president of the DeFi committee of the French Lobby ADAN. This role involves dialogues with regulators, institutions, and governments in France and Europe regarding the DeFi sector. The ACI has been involved in discussions related to the "Mica 2" regulation, which addresses DeFi services. | ||
|
||
The ACI, as one of the voices for the Aave DAO, has consistently worked towards enhancing the DAO's presence and reputation in the broader ecosystem. | ||
|
||
**What to Expect from Phase II?** | ||
|
||
The ACI will continue to be one of the voices of Aave across the globe, supporting devs in hackathons, being one of the DAO voices during events and supporting our brand quality. | ||
|
||
## Specification | ||
|
||
Creation of a new stream with the following properties: | ||
|
||
- **Duration**: 180 days | ||
- **Budget**: 375k GHO | ||
|
||
## References | ||
|
||
- Implementation: [Ethereum](https://github.com/bgd-labs/aave-proposals/blob/main/src/20231022_AaveV3_Eth_ACIPhaseII/AaveV3_Ethereum_ACIPhaseII_20231022.sol) | ||
- Tests: [Ethereum](https://github.com/bgd-labs/aave-proposals/blob/main/src/20231022_AaveV3_Eth_ACIPhaseII/AaveV3_Ethereum_ACIPhaseII_20231022.t.sol) | ||
- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0x04e7059fc5b2c33d4e4554d68d27ef67c1f6d9d310b07493116bdfbf15c25bbc) | ||
- [Discussion](https://governance.aave.com/t/arfc-aci-phase-ii/15138) | ||
|
||
## Copyright | ||
|
||
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). |
31 changes: 31 additions & 0 deletions
31
src/20231022_AaveV3_Eth_ACIPhaseII/AaveV3_ACIPhaseII_20231022.s.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.0; | ||
|
||
import {GovHelpers} from 'aave-helpers/GovHelpers.sol'; | ||
import {EthereumScript} from 'aave-helpers/ScriptUtils.sol'; | ||
import {AaveV3_Ethereum_ACIPhaseII_20231022} from './AaveV3_Ethereum_ACIPhaseII_20231022.sol'; | ||
|
||
/** | ||
* @dev Deploy AaveV3_Ethereum_ACIPhaseII_20231022 | ||
* command: make deploy-ledger contract=src/20231022_AaveV3_Eth_ACIPhaseII/AaveV3_ACIPhaseII_20231022.s.sol:DeployEthereum chain=mainnet | ||
*/ | ||
contract DeployEthereum is EthereumScript { | ||
function run() external broadcast { | ||
new AaveV3_Ethereum_ACIPhaseII_20231022(); | ||
} | ||
} | ||
|
||
/** | ||
* @dev Create Proposal | ||
* command: make deploy-ledger contract=src/20231022_AaveV3_Eth_ACIPhaseII/AaveV3_ACIPhaseII_20231022.s.sol:CreateProposal chain=mainnet | ||
*/ | ||
contract CreateProposal is EthereumScript { | ||
function run() external broadcast { | ||
GovHelpers.Payload[] memory payloads = new GovHelpers.Payload[](1); | ||
payloads[0] = GovHelpers.buildMainnet(0x37764148819A1C72CBEbeEc841229Dc441b2644b); | ||
GovHelpers.createProposal( | ||
payloads, | ||
GovHelpers.ipfsHashFile(vm, 'src/20231022_AaveV3_Eth_ACIPhaseII/ACIPhaseII.md') | ||
); | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
src/20231022_AaveV3_Eth_ACIPhaseII/AaveV3_Ethereum_ACIPhaseII_20231022.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.0; | ||
|
||
import {IProposalGenericExecutor} from 'aave-helpers/interfaces/IProposalGenericExecutor.sol'; | ||
import {AaveV3Ethereum, AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol'; | ||
|
||
/** | ||
* @title ACI Phase II | ||
* @author Marc Zeller - Aave-Chan Initiative | ||
* - Snapshot: https://snapshot.org/#/aave.eth/proposal/0x04e7059fc5b2c33d4e4554d68d27ef67c1f6d9d310b07493116bdfbf15c25bbc | ||
* - Discussion: https://governance.aave.com/t/arfc-aci-phase-ii/15138 | ||
*/ | ||
contract AaveV3_Ethereum_ACIPhaseII_20231022 is IProposalGenericExecutor { | ||
address public constant ACI_TREASURY = 0x57ab7ee15cE5ECacB1aB84EE42D5A9d0d8112922; | ||
address public constant GHO = AaveV3EthereumAssets.GHO_UNDERLYING; | ||
uint256 public constant STREAM_AMOUNT = 375_000 ether; | ||
uint256 public constant STREAM_DURATION = 180 days; | ||
uint256 public constant ACTUAL_STREAM_AMOUNT_GHO = | ||
(STREAM_AMOUNT / STREAM_DURATION) * STREAM_DURATION; | ||
|
||
function execute() external { | ||
AaveV3Ethereum.COLLECTOR.createStream( | ||
ACI_TREASURY, | ||
ACTUAL_STREAM_AMOUNT_GHO, | ||
GHO, | ||
block.timestamp, | ||
block.timestamp + STREAM_DURATION | ||
); | ||
} | ||
} |
98 changes: 98 additions & 0 deletions
98
src/20231022_AaveV3_Eth_ACIPhaseII/AaveV3_Ethereum_ACIPhaseII_20231022.t.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.0; | ||
|
||
import 'forge-std/Test.sol'; | ||
|
||
import {GovHelpers} from 'aave-helpers/GovHelpers.sol'; | ||
import {AaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol'; | ||
import {AaveV3Ethereum, AaveV3EthereumAssets, ICollector} from 'aave-address-book/AaveV3Ethereum.sol'; | ||
import {AaveV2Ethereum, AaveV2EthereumAssets} from 'aave-address-book/AaveV2Ethereum.sol'; | ||
import {ProtocolV3TestBase} from 'aave-helpers/ProtocolV3TestBase.sol'; | ||
import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; | ||
import {AaveV3_Ethereum_ACIPhaseII_20231022} from './AaveV3_Ethereum_ACIPhaseII_20231022.sol'; | ||
|
||
/** | ||
* @dev Test for AaveV3_Ethereum_ACIPhaseII_20231022 | ||
* command: make test-contract filter=AaveV3_Ethereum_ACIPhaseII_20231022 | ||
*/ | ||
contract AaveV3_Ethereum_ACIPhaseII_20231022_Test is ProtocolV3TestBase { | ||
AaveV3_Ethereum_ACIPhaseII_20231022 internal proposal; | ||
|
||
address public constant ACI_TREASURY = 0x57ab7ee15cE5ECacB1aB84EE42D5A9d0d8112922; | ||
|
||
ICollector public constant AAVE_COLLECTOR = ICollector(AaveV3Ethereum.COLLECTOR); | ||
|
||
address public constant GHO = AaveV3EthereumAssets.GHO_UNDERLYING; | ||
uint256 public constant STREAM_AMOUNT = 375_000 ether; | ||
uint256 public constant STREAM_DURATION = 180 days; | ||
uint256 public constant ACTUAL_STREAM_AMOUNT_GHO = | ||
(STREAM_AMOUNT / STREAM_DURATION) * STREAM_DURATION; | ||
|
||
address public constant GHO_WHALE = 0xE831C8903de820137c13681E78A5780afDdf7697; | ||
|
||
function setUp() public { | ||
vm.createSelectFork(vm.rpcUrl('mainnet'), 18405191); | ||
proposal = new AaveV3_Ethereum_ACIPhaseII_20231022(); | ||
} | ||
|
||
function testProposalExecution() public { | ||
uint256 nextCollectorStreamID = AAVE_COLLECTOR.getNextStreamId(); | ||
|
||
uint256 ACIGHOBalanceBefore = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).balanceOf( | ||
address(ACI_TREASURY) | ||
); | ||
|
||
// the Collector gets a generous donation from a GHO whale | ||
|
||
hoax(GHO_WHALE); | ||
IERC20(GHO).transfer(address(AAVE_COLLECTOR), ACTUAL_STREAM_AMOUNT_GHO); | ||
|
||
uint256 CollectorV3GHOBalanceBefore = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).balanceOf( | ||
address(AAVE_COLLECTOR) | ||
); | ||
|
||
GovHelpers.executePayload(vm, address(proposal), AaveGovernanceV2.SHORT_EXECUTOR); | ||
|
||
// Checking if the streams have been created properly | ||
// scoping to avoid the "stack too deep" error | ||
{ | ||
( | ||
address senderGHO, | ||
address recipientGHO, | ||
uint256 depositGHO, | ||
address tokenAddressGHO, | ||
uint256 startTimeGHO, | ||
uint256 stopTimeGHO, | ||
uint256 remainingBalanceGHO, | ||
|
||
) = AAVE_COLLECTOR.getStream(nextCollectorStreamID); | ||
|
||
assertEq(senderGHO, address(AAVE_COLLECTOR)); | ||
assertEq(recipientGHO, ACI_TREASURY); | ||
assertEq(depositGHO, ACTUAL_STREAM_AMOUNT_GHO); | ||
assertEq(tokenAddressGHO, address(GHO)); | ||
assertEq(stopTimeGHO - startTimeGHO, STREAM_DURATION); | ||
assertEq(remainingBalanceGHO, ACTUAL_STREAM_AMOUNT_GHO); | ||
} | ||
|
||
// checking if the ACI can withdraw from the stream | ||
|
||
vm.startPrank(ACI_TREASURY); | ||
vm.warp(block.timestamp + STREAM_DURATION + 1 days); | ||
|
||
AAVE_COLLECTOR.withdrawFromStream(nextCollectorStreamID, ACTUAL_STREAM_AMOUNT_GHO); | ||
uint256 nextACIGHOBalance = IERC20(GHO).balanceOf(ACI_TREASURY); | ||
|
||
assertEq(ACIGHOBalanceBefore, nextACIGHOBalance - ACTUAL_STREAM_AMOUNT_GHO); | ||
|
||
// Check Collector balance after stream withdrawal | ||
|
||
uint256 CollectorV3GHOBalanceAfter = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).balanceOf( | ||
address(AAVE_COLLECTOR) | ||
); | ||
|
||
assertEq(CollectorV3GHOBalanceAfter, CollectorV3GHOBalanceBefore - ACTUAL_STREAM_AMOUNT_GHO); | ||
|
||
vm.stopPrank(); | ||
} | ||
} |
3d42578
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Foundry report
Build log
Test success 🌈