From ba24358ee361de70b26539dc07ab58419af735da Mon Sep 17 00:00:00 2001 From: Cheyenne Atapour Date: Mon, 29 Jul 2024 09:53:22 -0700 Subject: [PATCH] AIP: Events and Sponsorships Grant 2024 (#384) * Add proposal for Gho Incident Report 20231113 (#1) * chore: add payload and deploy script for update of GHO variable debt token * forge install: gho-core * chore: add gho-core to dependency * test: Add tests for update of gho variable token * test: Add tests for update of gho variable token * fix: add modifier in method of interface * fix: remove gho dependency from repo and fix test * fix: Remove unnecesary dependency * fix: Add latest details --------- Co-authored-by: miguelmtzinf * fix: Make new impl constant (#3) * fix: Amend AIP text (#4) * fix: Make new impl constant * fix: Fix AIP text * test: Tweak default tests with borrow cap update (#5) * fix: lint issue (#6) * test: Add diffs from test running (#7) * fix: Add payload address (#8) * fix: Fix payload address in script (#9) * fix: Remove unneeded diff file (#10) * initial upload: proposal template and fund stream * test: add stream withdraw test * docs: add summary and specs of AIP * test: add fuzz and insufficient funds tests * test: fuzz by seconds instead of days * fix: test changes as per pr comments * fix: comment typo * fix: discussion links, deal funds directly in tests * feat: update proposal doc * fix: doc header and formatting * fix: replace arfc with aip * fix: Fix typo in AIP text Co-authored-by: sendra * feat: initial upload of template * feat: initial upload doc * fix: aip not arfc * fix: Updates lib * fix: Fix AIP text --------- Co-authored-by: Parth Patel Co-authored-by: miguelmtzinf Co-authored-by: miguelmtz <36620902+miguelmtzinf@users.noreply.github.com> Co-authored-by: sendra --- ...16bff6a87c75a25166c7a6913a3201af424a23.svg | 1 + ...Ethereum_EventsGrant2024_20240718_after.md | 5 ++ ...aveV3Ethereum_EventsGrant2024_20240718.sol | 24 ++++++++ ...eV3Ethereum_EventsGrant2024_20240718.t.sol | 50 ++++++++++++++++ .../EventsGrant2024.md | 46 ++++++++++++++ .../EventsGrant2024_20240718.s.sol | 60 +++++++++++++++++++ .../config.ts | 15 +++++ 7 files changed, 201 insertions(+) create mode 100644 .assets/bb16bff6a87c75a25166c7a6913a3201af424a23.svg create mode 100644 diffs/AaveV3Ethereum_EventsGrant2024_20240718_before_AaveV3Ethereum_EventsGrant2024_20240718_after.md create mode 100644 src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.sol create mode 100644 src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.t.sol create mode 100644 src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024.md create mode 100644 src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024_20240718.s.sol create mode 100644 src/20240718_AaveV3Ethereum_EventsGrant2024/config.ts diff --git a/.assets/bb16bff6a87c75a25166c7a6913a3201af424a23.svg b/.assets/bb16bff6a87c75a25166c7a6913a3201af424a23.svg new file mode 100644 index 000000000..3dc668491 --- /dev/null +++ b/.assets/bb16bff6a87c75a25166c7a6913a3201af424a23.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%2%4%6%8%Optimal utilization 0%Optimal utilization 0% \ No newline at end of file diff --git a/diffs/AaveV3Ethereum_EventsGrant2024_20240718_before_AaveV3Ethereum_EventsGrant2024_20240718_after.md b/diffs/AaveV3Ethereum_EventsGrant2024_20240718_before_AaveV3Ethereum_EventsGrant2024_20240718_after.md new file mode 100644 index 000000000..c15d3e2bc --- /dev/null +++ b/diffs/AaveV3Ethereum_EventsGrant2024_20240718_before_AaveV3Ethereum_EventsGrant2024_20240718_after.md @@ -0,0 +1,5 @@ +## Raw diff + +```json +{} +``` \ No newline at end of file diff --git a/src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.sol b/src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.sol new file mode 100644 index 000000000..92ec83adc --- /dev/null +++ b/src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.sol @@ -0,0 +1,24 @@ +// 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 Events Grant 2024 + * @author Aave Labs + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0x5d4e3fba58f76f516afd0855a687027270b74163911116f14a4f5c01c34a9bd9 + * - Discussion: https://governance.aave.com/t/arfc-aave-events-sponsorship-proposal-2024/18276 + */ +contract AaveV3Ethereum_EventsGrant2024_20240718 is IProposalGenericExecutor { + address public constant AAVE_LABS = 0x1c037b3C22240048807cC9d7111be5d455F640bd; + uint256 public constant GHO_GRANT_AMOUNT = 650_000 ether; + + function execute() external { + AaveV3Ethereum.COLLECTOR.transfer( + AaveV3EthereumAssets.GHO_UNDERLYING, + AAVE_LABS, + GHO_GRANT_AMOUNT + ); + } +} diff --git a/src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.t.sol b/src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.t.sol new file mode 100644 index 000000000..4beef3220 --- /dev/null +++ b/src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.t.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Ethereum, AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase} from 'aave-helpers/ProtocolV3TestBase.sol'; +import {AaveV3Ethereum_EventsGrant2024_20240718} from './AaveV3Ethereum_EventsGrant2024_20240718.sol'; +import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; + +/** + * @dev Test for AaveV3Ethereum_EventsGrant2024_20240718 + * command: FOUNDRY_PROFILE=mainnet forge test --match-path=src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.t.sol -vv + */ +contract AaveV3Ethereum_EventsGrant2024_20240718_Test is ProtocolV3TestBase { + AaveV3Ethereum_EventsGrant2024_20240718 internal proposal; + + address public constant AAVE_LABS = 0x1c037b3C22240048807cC9d7111be5d455F640bd; + uint256 public constant GHO_GRANT_AMOUNT = 650_000 ether; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 20336106); + proposal = new AaveV3Ethereum_EventsGrant2024_20240718(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest('AaveV3Ethereum_EventsGrant2024_20240718', AaveV3Ethereum.POOL, address(proposal)); + } + + function testProposalExecution() public { + uint256 ALGHOBalanceBefore = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).balanceOf(AAVE_LABS); + uint256 CollectorV3GHOBalanceBefore = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).balanceOf( + address(AaveV3Ethereum.COLLECTOR) + ); + + executePayload(vm, address(proposal)); + + assertEq( + IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).balanceOf(AAVE_LABS), + ALGHOBalanceBefore + GHO_GRANT_AMOUNT + ); + assertEq( + IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).balanceOf(address(AaveV3Ethereum.COLLECTOR)), + CollectorV3GHOBalanceBefore - GHO_GRANT_AMOUNT + ); + } +} diff --git a/src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024.md b/src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024.md new file mode 100644 index 000000000..de2684bbb --- /dev/null +++ b/src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024.md @@ -0,0 +1,46 @@ +--- +title: "Events Grant 2024" +author: "Aave Labs" +discussions: "https://governance.aave.com/t/arfc-aave-events-sponsorship-proposal-2024/18276" +snapshot: "https://snapshot.org/#/aave.eth/proposal/0x5d4e3fba58f76f516afd0855a687027270b74163911116f14a4f5c01c34a9bd9" +--- + +## Summary + +This AIP proposes the Aave DAO budget allocation on events at key ecosystem initiatives at EthCC and Devcon to help to reinforce Aave Protocol’s unique and positive culture, share technical knowledge, and attract new community members. These initiatives are aimed at helping to continue the expansion of the DeFi ecosystem by showcasing Aave Protocol’s core values. + +## Motivation + +Aave Protocol has consistently been at the forefront of DeFi innovation with pioneering features. With a strong emphasis on security, usability, and composability, Aave has amassed a vibrant and engaged community of developers, users, contributors, and stakeholders. + +Although the Aave Protocol has emerged as a leader within DeFi, the sector at large is still in its nascent stages, and Aave should work hard to retain its spot as a leader. For the events proposal from the DAO for 2024, Aave Labs wants to concentrate on proposing fewer but higher-quality events to maximize impact. + +## Specification + +Aave Labs is requesting a budget allocation for 650,000 GHO for events for the remainder of 2024 for EthCC Brussels (45%) and Devcon Bangkok (55%). This proposal will transfer 650,000 GHO from the Aave DAO treasury to a wallet controlled by Aave Labs (0x1c037b3C22240048807cC9d7111be5d455F640bd). + +These initiatives will serve multiple purposes: + +1. Hackathons & Bounties: We want to encourage developers to build on Aave Protocol, as well as GHO. These hackathons not only provide a platform for the Aave community to connect with talented developers in both web3 and web2, and to remain visible and competitive in a growing industry, but also lead to the creation of innovative DeFi projects that enhance the Aave ecosystem. We propose to sponsor one ETHGlobal hackathon in Q4 in Bangkok. + +2. Open Finance Day: We are hosting Open Finance Day in partnership with key players in DeFi for high quality talks, networking, and light bites. Talks will include members of the DeFi community, Aave Labs, and Aave DAO community members and service providers. + +3. Side Events: Hosting side events alongside major conferences is an opportunity to increase community awareness, foster connections, and share technical knowledge, and industry insights. Typically featuring panels, workshops, and discussions led by industry experts, side events are designed to strengthen awareness of Aave and GHO technology among strategic audiences, reach new target audiences, and ensure Aave and GHO remain top-of-mind within and outside the community. + +4. Merch: Aave Labs seeks to create highly coveted Aave and GHO branded merchandise to distribute at events, as part of community engagement and awareness-building efforts as well as to proliferate the new visual identity and the beloved Ronnie ghost. Aave Labs will continue to push for the use of sustainable materials and creation of merchandise people actually wear, use, and love. + +5. rAAVE: To celebrate the Aave community’s welcoming culture, we aim to host two more editions of the flagship rAAVE event. Throughout the past years rAAVE has positioned itself to be the most sought after event in the ecosystem. They foster community spirit and create memorable experiences. We will integrate the GHO Pass for ticketing logistics and manage press relations and social media to maximize awareness and inclusion. This year’s events will be hosted at EthCC in Brussels and Devcon in Bangkok. To mitigate some costs for rAAVE, we are planning to potentially obtain co-sponsorship with current or potentially new partners for the Aave ecosystem. Due to the event’s high visibility, it is crucial that if co-sponsorship is obtained, the selected partners are aligned with the Aave Community and this is conducted in a balanced manner. + +After covering the aforementioned main sponsorships, any remaining budget will be directed towards side events related to the security of DeFi and smart contract technology. Any excess funds from this grant will be rolled over to be used for events during Q1 2025. A recap on last year’s events was posted to governance last December, here. +Aave Labs shall cover all expenses for its team members, and this proposal does not request any funds for these expenses, or include any compensation for Aave Labs’ work. + +## References + +- Implementation: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.sol) +- Tests: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240718_AaveV3Ethereum_EventsGrant2024/AaveV3Ethereum_EventsGrant2024_20240718.t.sol) +- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0x5d4e3fba58f76f516afd0855a687027270b74163911116f14a4f5c01c34a9bd9) +- [Discussion](https://governance.aave.com/t/arfc-aave-events-sponsorship-proposal-2024/18276) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024_20240718.s.sol b/src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024_20240718.s.sol new file mode 100644 index 000000000..f1c62db01 --- /dev/null +++ b/src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024_20240718.s.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/GovV3Helpers.sol'; +import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol'; +import {EthereumScript} from 'aave-helpers/ScriptUtils.sol'; +import {AaveV3Ethereum_EventsGrant2024_20240718} from './AaveV3Ethereum_EventsGrant2024_20240718.sol'; + +/** + * @dev Deploy Ethereum + * deploy-command: make deploy-ledger contract=src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024_20240718.s.sol:DeployEthereum chain=mainnet + * verify-command: FOUNDRY_PROFILE=mainnet npx catapulta-verify -b broadcast/EventsGrant2024_20240718.s.sol/1/run-latest.json + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Ethereum_EventsGrant2024_20240718).creationCode + ); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(payload0); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Create Proposal + * command: make deploy-ledger contract=src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024_20240718.s.sol:CreateProposal chain=mainnet + */ +contract CreateProposal is EthereumScript { + function run() external { + // create payloads + PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](1); + + // compose actions for validation + IPayloadsControllerCore.ExecutionAction[] + memory actionsEthereum = new IPayloadsControllerCore.ExecutionAction[](1); + actionsEthereum[0] = GovV3Helpers.buildAction( + type(AaveV3Ethereum_EventsGrant2024_20240718).creationCode + ); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20240718_AaveV3Ethereum_EventsGrant2024/EventsGrant2024.md' + ) + ); + } +} diff --git a/src/20240718_AaveV3Ethereum_EventsGrant2024/config.ts b/src/20240718_AaveV3Ethereum_EventsGrant2024/config.ts new file mode 100644 index 000000000..6a48cfec0 --- /dev/null +++ b/src/20240718_AaveV3Ethereum_EventsGrant2024/config.ts @@ -0,0 +1,15 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + title: 'Events Grant 2024', + author: 'Aave Labs', + discussion: 'https://governance.aave.com/t/arfc-aave-events-sponsorship-proposal-2024/18276', + snapshot: + 'https://snapshot.org/#/aave.eth/proposal/0x5d4e3fba58f76f516afd0855a687027270b74163911116f14a4f5c01c34a9bd9', + pools: ['AaveV3Ethereum'], + shortName: 'EventsGrant2024', + date: '20240718', + votingNetwork: 'POLYGON', + }, + poolOptions: {AaveV3Ethereum: {configs: {OTHERS: {}}, cache: {blockNumber: 20336106}}}, +};