Skip to content

Commit

Permalink
feat: Add CCC update and new Bridge adapters for aDI
Browse files Browse the repository at this point in the history
  • Loading branch information
sendra committed Mar 5, 2024
1 parent a45c753 commit a391f97
Show file tree
Hide file tree
Showing 23 changed files with 1,366 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
title: "aDI and bridge adapters update"
author: "BGD Labs @bgdlabs"
discussions: ""
---

## Simple Summary

## Motivation

## Specification

## References

- Implementation: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Ethereum_ADIAndBridgeAdaptersUpdate_20240305.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Polygon_ADIAndBridgeAdaptersUpdate_20240305.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Avalanche_ADIAndBridgeAdaptersUpdate_20240305.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Optimism_ADIAndBridgeAdaptersUpdate_20240305.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Arbitrum_ADIAndBridgeAdaptersUpdate_20240305.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Metis_ADIAndBridgeAdaptersUpdate_20240305.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Base_ADIAndBridgeAdaptersUpdate_20240305.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Gnosis_ADIAndBridgeAdaptersUpdate_20240305.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Scroll_ADIAndBridgeAdaptersUpdate_20240305.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3BNB_ADIAndBridgeAdaptersUpdate_20240305.sol)
- Tests: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Ethereum_ADIAndBridgeAdaptersUpdate_20240305.t.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Polygon_ADIAndBridgeAdaptersUpdate_20240305.t.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Avalanche_ADIAndBridgeAdaptersUpdate_20240305.t.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Optimism_ADIAndBridgeAdaptersUpdate_20240305.t.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Arbitrum_ADIAndBridgeAdaptersUpdate_20240305.t.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Metis_ADIAndBridgeAdaptersUpdate_20240305.t.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Base_ADIAndBridgeAdaptersUpdate_20240305.t.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Gnosis_ADIAndBridgeAdaptersUpdate_20240305.t.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3Scroll_ADIAndBridgeAdaptersUpdate_20240305.t.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240305_Multi_ADIAndBridgeAdaptersUpdate/AaveV3BNB_ADIAndBridgeAdaptersUpdate_20240305.t.sol)
- [Snapshot](TODO)
- [Discussion](TODO)

## Copyright

Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
Original file line number Diff line number Diff line change
@@ -0,0 +1,328 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/GovV3Helpers.sol';
import {EthereumScript, PolygonScript, AvalancheScript, OptimismScript, ArbitrumScript, MetisScript, BaseScript, GnosisScript, ScrollScript, BNBScript} from 'aave-helpers/ScriptUtils.sol';
import {AaveV3Ethereum_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3Ethereum_ADIAndBridgeAdaptersUpdate_20240305.sol';
import {AaveV3Polygon_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3Polygon_ADIAndBridgeAdaptersUpdate_20240305.sol';
import {AaveV3Avalanche_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3Avalanche_ADIAndBridgeAdaptersUpdate_20240305.sol';
import {AaveV3Optimism_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3Optimism_ADIAndBridgeAdaptersUpdate_20240305.sol';
import {AaveV3Arbitrum_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3Arbitrum_ADIAndBridgeAdaptersUpdate_20240305.sol';
import {AaveV3Metis_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3Metis_ADIAndBridgeAdaptersUpdate_20240305.sol';
import {AaveV3Base_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3Base_ADIAndBridgeAdaptersUpdate_20240305.sol';
import {AaveV3Gnosis_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3Gnosis_ADIAndBridgeAdaptersUpdate_20240305.sol';
import {AaveV3Scroll_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3Scroll_ADIAndBridgeAdaptersUpdate_20240305.sol';
import {AaveV3BNB_ADIAndBridgeAdaptersUpdate_20240305} from './AaveV3BNB_ADIAndBridgeAdaptersUpdate_20240305.sol';

/**
* @dev Deploy Ethereum
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployEthereum chain=mainnet
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/1/run-latest.json
*/
contract DeployEthereum is EthereumScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Ethereum_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Deploy Polygon
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployPolygon chain=polygon
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/137/run-latest.json
*/
contract DeployPolygon is PolygonScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Polygon_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Deploy Avalanche
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployAvalanche chain=avalanche
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/43114/run-latest.json
*/
contract DeployAvalanche is AvalancheScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Avalanche_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Deploy Optimism
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployOptimism chain=optimism
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/10/run-latest.json
*/
contract DeployOptimism is OptimismScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Optimism_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Deploy Arbitrum
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployArbitrum chain=arbitrum
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/42161/run-latest.json
*/
contract DeployArbitrum is ArbitrumScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Arbitrum_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Deploy Metis
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployMetis chain=metis
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/1088/run-latest.json
*/
contract DeployMetis is MetisScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Metis_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Deploy Base
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployBase chain=base
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/8453/run-latest.json
*/
contract DeployBase is BaseScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Base_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Deploy Gnosis
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployGnosis chain=gnosis
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/100/run-latest.json
*/
contract DeployGnosis is GnosisScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Gnosis_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Deploy Scroll
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployScroll chain=scroll
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/534352/run-latest.json
*/
contract DeployScroll is ScrollScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Scroll_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Deploy BNB
* deploy-command: make deploy-ledger contract=src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:DeployBNB chain=bnb
* verify-command: npx catapulta-verify -b broadcast/ADIAndBridgeAdaptersUpdate_20240305.s.sol/56/run-latest.json
*/
contract DeployBNB is BNBScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3BNB_ADIAndBridgeAdaptersUpdate_20240305).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/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate_20240305.s.sol:CreateProposal chain=mainnet
*/
contract CreateProposal is EthereumScript {
function run() external {
// create payloads
PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](10);

// compose actions for validation
IPayloadsControllerCore.ExecutionAction[]
memory actionsEthereum = new IPayloadsControllerCore.ExecutionAction[](1);
actionsEthereum[0] = GovV3Helpers.buildAction(
type(AaveV3Ethereum_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum);

IPayloadsControllerCore.ExecutionAction[]
memory actionsPolygon = new IPayloadsControllerCore.ExecutionAction[](1);
actionsPolygon[0] = GovV3Helpers.buildAction(
type(AaveV3Polygon_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[1] = GovV3Helpers.buildPolygonPayload(vm, actionsPolygon);

IPayloadsControllerCore.ExecutionAction[]
memory actionsAvalanche = new IPayloadsControllerCore.ExecutionAction[](1);
actionsAvalanche[0] = GovV3Helpers.buildAction(
type(AaveV3Avalanche_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[2] = GovV3Helpers.buildAvalanchePayload(vm, actionsAvalanche);

IPayloadsControllerCore.ExecutionAction[]
memory actionsOptimism = new IPayloadsControllerCore.ExecutionAction[](1);
actionsOptimism[0] = GovV3Helpers.buildAction(
type(AaveV3Optimism_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[3] = GovV3Helpers.buildOptimismPayload(vm, actionsOptimism);

IPayloadsControllerCore.ExecutionAction[]
memory actionsArbitrum = new IPayloadsControllerCore.ExecutionAction[](1);
actionsArbitrum[0] = GovV3Helpers.buildAction(
type(AaveV3Arbitrum_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[4] = GovV3Helpers.buildArbitrumPayload(vm, actionsArbitrum);

IPayloadsControllerCore.ExecutionAction[]
memory actionsMetis = new IPayloadsControllerCore.ExecutionAction[](1);
actionsMetis[0] = GovV3Helpers.buildAction(
type(AaveV3Metis_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[5] = GovV3Helpers.buildMetisPayload(vm, actionsMetis);

IPayloadsControllerCore.ExecutionAction[]
memory actionsBase = new IPayloadsControllerCore.ExecutionAction[](1);
actionsBase[0] = GovV3Helpers.buildAction(
type(AaveV3Base_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[6] = GovV3Helpers.buildBasePayload(vm, actionsBase);

IPayloadsControllerCore.ExecutionAction[]
memory actionsGnosis = new IPayloadsControllerCore.ExecutionAction[](1);
actionsGnosis[0] = GovV3Helpers.buildAction(
type(AaveV3Gnosis_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[7] = GovV3Helpers.buildGnosisPayload(vm, actionsGnosis);

IPayloadsControllerCore.ExecutionAction[]
memory actionsScroll = new IPayloadsControllerCore.ExecutionAction[](1);
actionsScroll[0] = GovV3Helpers.buildAction(
type(AaveV3Scroll_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[8] = GovV3Helpers.buildScrollPayload(vm, actionsScroll);

IPayloadsControllerCore.ExecutionAction[]
memory actionsBNB = new IPayloadsControllerCore.ExecutionAction[](1);
actionsBNB[0] = GovV3Helpers.buildAction(
type(AaveV3BNB_ADIAndBridgeAdaptersUpdate_20240305).creationCode
);
payloads[9] = GovV3Helpers.buildBNBPayload(vm, actionsBNB);

// create proposal
vm.startBroadcast();
GovV3Helpers.createProposal(
vm,
payloads,
GovV3Helpers.ipfsHashFile(
vm,
'src/20240305_Multi_ADIAndBridgeAdaptersUpdate/ADIAndBridgeAdaptersUpdate.md'
)
);
}
}
Loading

0 comments on commit a391f97

Please sign in to comment.